1.new关键字
Person zsPerson=new Person();
A、new帮助我们做了3件事儿:
1)、在内存中开辟一块空间。2)、在开辟的空间中创建对象。3)、调用对象的构造函数进行初始化对象
B、隐藏从父类那里继承过来的成员
2.访问修饰符
public:公开的公共的,在哪都能访问。
private:私有的,只能在当前类的内部进行访问,出了这个类就访问不到了。
protected:可以在当前类的内部以及该类的子类中访问。
internal:在当前项目中都可以访问
protected internal:
能够修饰类的访问修饰符只有两个:public和internal
子类的访问权限不能高于父类
3.常用的关键字
this:a.当前类的对象,b.调用自己的构造函数
base:调用父类的成员
new:a.创建对象,b.隐藏父类的成员
virtual:标记一个方法是虚方法
abstract:抽象,抽象成员必须包含在抽象类中,但是抽象类中并不一定都是抽象成员。
static:静态,静态类中一定都是静态成员,而静态成员并不一定都要在静态类中
override:重写
interface:接口
partial:部分类
sealed:密封类,不允许被继承
return:a.在方法中返回值,b.立即结束本次方法
break:跳出当前循环
continue:结束本次循环,回到当前条件,进行判断
struct:结构
enum:枚举
const:常量
3、关于虚方法需要注意的几点:
1).父类中如果有方法需要让子类重写,则可以将该方法标记为virtual
2).虚方法在父类中必须有实现,哪怕是空实现。
3).虚方法子类可以重写(override),也可以不重写
4、关于抽象方法注意的几点:
1).需要用abstract关键字标记
2).抽象方法不能有任何方法实现。
3).抽象成员必须包含在抽象类中。
4).由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
5).抽象类不能实例化, 抽象类的作用:抽象类的作用就是为了让子类继承。
6).抽象类中可以包括抽象成员,可以包括有具体代码的成员。
7). 还有抽象方法不能用static修饰
5、接口
1).接口中只能包含方法(属性、事件、索引器也都是方法)
2).接口中的成员都不能有任何实现。光说不做
3).接口不能被实例化。
4).接口中的成员不能有任何访问修饰符。(默认为public)
5).实现接口的子类必须将接口中的所有成员全都实现。
6).子类实现接口的方法时,不需要任何关键字,直接实现即可。
7).接口存在的意义就是为了多态。
6、静态与非静态的区别(static)
a.静态类里面必须是静态方法,静态方法里面必须是静态成员。非静态类里面可以有实例方法,非静态方法里面可以有实例成员。
b.静态方法需要用类名调用,非静态方法需要用对象调用。
7、结构和类的区别:
a.从类型上看:结构---值类型(栈) 类---引用类型(堆)
b.从声明的语法上看:结构---struct 类---class
c.在类中,构造函数里,既可以给字段赋值,也可以给属性赋值,构造函数是可以重载的。
但是,在结构的构造函数当中,必须只能给字段赋值,而且需要给全部的字段赋值,而不能选择性的给字段赋值。
结构和类的构造函数:
相同点:本身都会有一个默认的无参数的构造函数
不同点:当你在类中写了一个新的构造函数之后,那个默认无参数的构造函数就没有了。
但是,在结构中写了一个新的构造函数之后,那个默认无参数的构造函数依然在
如果我们只是单纯的存储数据的话,我们推荐使用结构,结构并不具备面向对象的特征(封装,继承,多态)