面对对象学习
关于类的访问修饰符:
1.如果没有定义访问修饰符,那么类的访问默认是internal
2.如果定义了public 那么其他的类都可以访问
3.如果类的成员:默认是private,私有成员只有当前类可以访问。
定义方法公式:
访问修饰符 + 返回值类型 + 方法名称(参数){(方法体)}
1.访问修饰符:public private protect internal
2.返回值类型:int string double void
2.1 void 没有返回值(可以用return可以提前终止方法),但是不能return具体的值)
2.2 非void必须返回相应的类型的值。
3.方法名称 方法名称首字母要大写
3.1 Pascal命名法,每一个单词的首字母需要大写
3.2 不能添加关键字 如:int string double
3.3 不能添加 _以外的特殊符号,不能以数字开头 java(_$)
4 参数 形参就是实参的规范
方法:
public int Sum(int a,int b)
{
return a+b;
}
静态与非静态之间的调用方式:
1.在单个类中:静态不能直接调用非静态成员(属性,方法),只能通过实例化的对象调用。
2.在单个类中:静态可以直接调用静态的成员。
3.在单个类中:实例成员可以自由调用静态成员。
4.在不同类中:实例成员通过类的对象调用,而静态成员通过类名调用。
解释:为什么静态成员不能调用非静态成员?
因为静态成员与类一起加载,在加载静态成员的时候,非静态成员还没有生成。
C#Main方法有四种形式:
1.static void Main(string[] args)
2.static void Main()
3.static int Main(string [] args)
4.static int Main(s)
可变参数:params
他是一个数组类型的变量。会自动根据用户传递的值生成一个数组。
1.可以根据需要传递0个或者多个参数。
2.如果没有传递任何参数,需要做一个判断,不然可能造成索引越界的错误。
if(arr.Length==0)
{
Console.WriteLine(“数组没有值”);
return 0;
}
代码规范
1.单行注释 //
2.多行注释/* */
3.文档注释 可以生成提示 ///
数组
所有存储结构中效率最高的。因为他在内存中是一串连续的空间
1.定义: 类型 [] =new int[ 长度];
2.数组里面只能存储同一类型的值
3.在c#中,[] 只能写在类型后面
4. 一般需要确定长度或者值,可以同时指定,但是长度跟值的数量需要对应一致。
5.因为数组长度固定,所有对数组的操作一般可以考虑使用for循环结构!
方法重载
1.方法名一致,但是方法的参数不一致,与方法的返回值无关。
普通的值传递和ref传递参数:
1.普遍值作为参数传递的时候,传递其实是值的副本,对副本的操作不影响到原来的初始值。
2.如果使用了ref/out传递参数,那么传递的是存储了值类型的数据的栈空间地址,会造成原始值和方法形参指向同一个地址空间,在方法里面进行的修改会影响到原始值。
3.ref侧重输入,out侧重于修改。如果使用out传递参数,那么:
3.1.在方法里面必须对传入的参数进行值的修改。
3.2out传入的参数可以不为实参赋值。
构造函数
1.他就是构建类的对象用的一个特殊的方法
2.没有返回值,名称和类名一致。
3.每一个类都会有一个默认的无参构造函数。
4.构造函数不能像普通方法一样显示调用,只能创建对象的时候调用,以及子类显示的调用父类的构造函数
5.如果人为添加带参的构造函数,那么系统默认生成的无参构造函数会自动消失。
所有我们在添加一个有参构造函数时候,立即添加一个无参的构造函数。
6.构造函数也可以重载。