封装: 建立一个类库文件--->程序集
- public 本类、当前命名空间里面都可以用,跨程序集也可以用
- protect 本类、子类(当前命名空间或者跨程序集)
- private 只能在本类使用
- internal 只能在当前命名空间使用
- protected internal 当前的命名空间可以用,子类(当前命名空间或跨程序集)
继承:
- A:B B父类/超类/基类,A子类/派生类,A就继承了B里面所有的成员(字段、方法)
- A:B 首先会调用B的构造方法,再调用A的构造方法
- A:B B:C ---> A:C
- A:B A和B有相同的一个方法,默认情况下,当A对象调用该方法时,A里面继承到的该方法被隐藏,调用的是A的方法
- A:B A和B都有相同的一个方法X,A的对象调用C方法,调用的是A的C方法,B是C方法被覆写。覆写的条件是B里面需要声明该方法为虚方法(virtual),A里面需要通过关键字override去实现覆写。
- 子类的对象可以赋值给父类的变量。反正不行。所有类的父类是object
- 里氏替换原则
- A:B A和B有相同的方法
- b=new A();
- C(); //默认情况下,调用的是B里面的,如果C被覆写,就调用子类的。
- 密封类sealed,不能被继承。
- 类是单继承的,一个类只能继承一个类。
多态:
- 覆写
- 重载 方法名相同,实现内容不同