美文网首页
C#(16)构造析构 封装继承 里氏转化

C#(16)构造析构 封装继承 里氏转化

作者: cGunsNRoses | 来源:发表于2017-08-29 19:14 被阅读0次

    8yue25

    构造方法和析构方法

    构造方法定义

    1.构造方法必须与类重名;

    2.构造方法没有返回值,但可以有参数;

    3.构造方法可以有多个重载;

    4.不带参数的构造方法称为默认构造;

    总结 

    1.构造方法的本质是一个构造器,是为了类的实例化而产生;

    2.构造方法是一种特殊的方法,它没有返回值,它必须与类重名

    ,它只能在初始化的时候被系统自动执行,外部不能调用;

    3.系统会默认的为你的类添加一个无参构造方法;

    4.如果将构造函数设为private,则不能被外部实例化;

    5.如果类里面有带有参数的构造方法,想调默认构造时,必须把

    默认构造显示的写出来;(结构体不用写)



    析构函数

    1、只有类才有析构方法,一个类有一个

    2、无法继承重载

    3、无法调用析构

    4、系统自动调用,当对象被销毁时


    面向对象三大特性 :封装继承多态

    一、封装

    封装是实现面向对象程序设计的第一步,封装就是 将数据或函数等集合在一个个单元(类)中;

    封装的意义在于保护或者防止保护代码(数据)被我们无意破坏

    封装就是对类成员的再次包装,属性就是对字段的再次包装;

    二、继承(类名后面加冒号 ":")

    继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。

    被继承的类称为“基类 ”

    继承这些成员的类称为“派生类 ”

    派生类只能有一个直接继承(单继承);可用接口实现多继承

    继承是可传递的

    例如:B继承于A  C继承于B    C有AB里面所有东西

              如果A继承于B,那么A对象可以转化为B

    基类有的,派生类都有;派生类有的,基类可能没有。

    派生类可以赋值给基类,而基类不能赋值给派生类。

    分析问题的时候可能从最基础的子类开始,找到共同的东西写一个父类


    里氏转化


    里氏转换的作用是消除不同子类之间类型的差异,把其类型转换为统一的数据类型,这样就可以写出一套

    通用的代码,这样即可以最大限度的重用代码,同时也提高了程序开发的效率;


    原则一、子类对象可以直接赋值给父类(掩盖原来真实类型,本质不变(xStudent)

    People people = new Student();

    转换后可以调用父类里面的公有成员,子类里面的公有成员调不到.

    原则二、父类可以转换成子类,这样就可以调到子类里面的公有成员了(还原出真是类型)

    里氏原则一后,想把Student转化回来用子类里面的成员,使用as强转,is判断


    例子:把刀打包装成箱子带走,这个过程是原则一,

                到目的地之后,把刀拿出来,还原刀 ,是原则二

          is 和 as

    as是转换运算符,转换成功,就转换成as后面的类型,否则返回null

    is用来判断 是否是子类成员

    this和base(两个在静态类里面都不能使用)

    this.当前调用对象

    bsae 当前直接基类对象

    :base 在构造函数里


    new可以用来:1、实例化对象  2、方法转换

    相关文章

      网友评论

          本文标题:C#(16)构造析构 封装继承 里氏转化

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