析构 匿名 密封 多态

1.析构方法

格式: ~类名(){ };

没有返回值

没有参数列表

不能重载

没有访问修饰符

垃圾回收机制会自动调用 不能手动调用

析构方法只能定义在类里,一个类只有一个析构方法

析构方法在继承中顺序执行:先派生类 再父类

如果不在一个类中 从后往前执行析构方法

2.匿名类型

根据赋的初值自动推导变量类型

必须要赋初始值 否则系统无法推导

变量类型一经确定 就不允许改变

3.密封

C#允许使用sealed关键字来修饰类和方法

当修饰类的时候表示该类不允许被继承

当sealed修饰方法的时候表示该方法不能派生类被重写,但是可以被派生类覆盖(隐藏 new).

用法:派生类可以通过sealed阻止被继承,内部方法通过sealed可以阻止被重写。

对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。

还可以在重写基类中的虚方法或虚属性的方法或属性上使用 sealed 修饰符。

(不是重写的方法不能密封)

4.多态 (提高代码的维护性和拓展性  不是很理解...)

同一操作,作用不同对象有不同的实现

里氏转换

原则一:子类对象可以直接赋值给父类对象

Person p = new Student();

当父类指针指向子类实例对象的时候

调用虚方法执行的是派生类里面重写之后的方法

调用隐藏方法执行的是基类里面的原方法

里氏转换的作用:消除不同子类之间类型的差异,把其类型转换成统一的数据类型,这样就可以写出一套通用的代码,也就是可以最大限度的重用代码,同时也提高了程序开发的效率。

原则二:父类可以转换成子类,这样就可以调用子类里面的公有成员了

as 关键字

将父类指针转向实际类型

转换之后无论是调用虚方法还是隐藏方法,最终执行的都是派生类里面的方法

Student s = p as Student;

多态的好处:

1.把不同子类对象都当做父类来看,屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

2.提高代码的维护和可扩展性。

is 关键字

判断一个对象是否是指定的类型,是的话返回true 不是的话返回false

用一个bool 值变量来接收

先判断Student 是否是 Person类型 如果是就强制转换,否则就不转换

如果不判断转化不成功系统会报错

Person person = new Person(); Student student = new Student();

bool flag = student is person;

If (flag) { Person per = (Person)student; }

你可能感兴趣的:(析构 匿名 密封 多态)