深入理解多态 笔记
1.继承:如果类A从类B中可以获取到公共信息,那么这种机制称为继承。
2.关于base关键字
base.父类属性
base.父类方法
base()
3.protected 受保护的。在当前类和子类中可以访问。(锁定/限定的对象:类中的变量)
4.子类构造揭秘
5.继承的两个特性,单根性 和 传递性(子类的子类可以获取到父类的信息)
6.多态:
多个对象,,,对于同一个操作,做出的响应不同。这种机制称为多态。
7.构成多态的条件
父类要有虚方法,子类需要用Override关键字重写虚方法。
7.多态高级 Java++
1.多态
里氏替换原则:
子类除了可以具有父类非私有的成员和方法外,还可以
拥有自己特有的成员变量和方法。
2.is和as
is做的是类型判定
as做的是类型转换 ,()强转。本行code不会有错误,如果转换不了。返回null
3.父类的虚方法,在子类中不必强制重写
父类的抽象方法,子类必须强制重写。?
4.抽象方法实现多态
父类得是抽象类,而且定义了抽象方法
子类必须重写抽象方法
5.抽象类和抽象方法注意点:手写()
1.抽象类使用Abstract关键字修饰。
2.抽象方法只能位于抽象类中。
3.抽象类不能实例化
4.抽象方法不能有方法体,甚至连{}都没有
5.抽象类不能是静态类或者密封类
6.子类必须重写抽象类中的所有抽象方法,除非子类本身也是一个抽象类
7.抽象类中可以有普通方法
8.抽象类可以有构造函数
9.重写所有抽象方法的快捷键是Ctrl+.
10.抽象类中抽象方法就是用来约束子类方法形式(签名)的
原理要解:抽象类其实是可以实例化的,但是他的实例化方式不是通过new方式来创建对象,
而是通过父类的引用来指向子类的实例来间接地实现父类的实例化
(因为子类要实例化前,一定会先实例化他的父类。这样创建了继承抽象类的子类的对象,
也就把其父类(抽象类)给实例化了).
结论:抽象类是可以实例化的,不能通过new实例化,可以通过子类构造自动调度父类构造实例化
6.接口
项目中业务必须使用接口。
后来:接口就一个用Interface 修饰的++++++++++开发中的接口
1.接口也是一种数据类型
2.案例:飞机和小鸟都能飞,他们都实现了IFly这个接口。但是他们飞翔的方式不同。这也是多态的一种实现方案
一个类实现一个接口 100个方法 ,其中只有一个方法必须要实现的。
.method public hidebysig newslot abstract virtual instance void Fly() cil managed
{
}
3.接口污染
4.一个类实现N个接口,就是之前我们提到的变相的多继承。
类和接口:类实现接口
接口和接口 :继承
5.父类变量指向子类对象
Typer和Coder