美文网首页
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)构造析构 封装继承 里氏转化

    8yue25 构造方法和析构方法 构造方法定义 1.构造方法必须与类重名; 2.构造方法没有返回值,但可以有参数;...

  • swift 4.0 继承 构造器

    继承 构造和析构

  • Python 之路06 - 面向对象

    本节大纲: 特性:class、object 封装 继承 多态语法\属性\方法构造函数\析构函数私有方法\私有属性类...

  • 【C++】C++学习笔记之十七:对象模型

    C++对象模型 各种关系下的构造和析构 继承关系下的构造和析构 正常情况下,带有继承关系的类对象的构造是由内而外,...

  • C++语法(二)

    继承 父类中默认构造,析构,拷贝构造operator=是不会被子类继承下去的 继承方式public:公有继承pri...

  • 2002.C++BASE-构造函数、析构函数

    转:C++继承中构造函数、析构函数调用顺序及虚析构函数 1.构造函数 大家都知道构造函数里就可以调用成员变量,而继...

  • Geekband C++ Week3 Notes

    面向对象编程 对象之间的关系继承组合委托 组合关系表达了has-a的关系组合关系下的构造和析构构造由内向外析构由外...

  • C++总结

    C++98 比 C 多出来的东西(部分) 类相关: 类 、抽象类、封装、继承、多态、类的构造与析构、运算符重载、静...

  • C++面向对象(下) Week5——Boolan

    1.Composition下的构造和析构 构造由内而外 析构由外而内 2.Inheritance 下的构造和析构 ...

  • 2017.9.11 C++总结

    构造函数和析构函数 构造函数----由于类的封装性,不能像普通变量一样初始化。 构造...

网友评论

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

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