美文网首页
析构 匿名 密封 多态

析构 匿名 密封 多态

作者: fooliker | 来源:发表于2017-03-16 15:55 被阅读0次

    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; }

    相关文章

      网友评论

          本文标题:析构 匿名 密封 多态

          本文链接:https://www.haomeiwen.com/subject/yidjnttx.html