注意: 如果A继承了B,那么A不仅拥有了B除私有的特性外的所有特性,A还可以拥有自己独特的特性。比如上面人的这个例子,一个继承了 “虚拟的人”,那么他除了有一个脑袋,二只胳膊,二条脚,要吃饭喝水外,他可能还会编程。编程就是他独特的特性了,因为不是每个人都会编程的。
1、
(1)、延续:父类存在,子类没有重写但可以使用;
(2)、新增:父类没有,子类新增加的
(3)、重写:父类子类都存在,但是弗雷德不满足要,子类对其进行从新定义;
2、 实例化:
(1)、先父类后子类,先静态后成员;
实例化的时候先调用父类的静态构造快,在调用父类的构造方法,然后子类的构造块,在调用子类的构造方法;
(2)、默认调用父类空构造;
3、重写 override
(1)、重写与重载:
重写:继承的子类中,方法签名相同( 方法名+形参个数 类型 顺序 )
重载:同一个类 方法名相同 ,形参个数 类型 顺序 不同
(2)、重写规则:在子类中签名与父类中相同,在合理范围内提高子类可见性;
A、返回类型:基本类型和void必须相同;引用类型要<=父类的返回类
B、异常:
C、可见性:要大于或等于父类中被重写的方法
三、多态: 有多态之前必须要有继承,只有多个类同时继承了同一个类,才有多态这样的说法。
还是以人为例子,前面我们有说过人都要做“吃饭”这样一个相同的事情。“吃饭”这个事情,体现到类中就是方法了。因为是人都是要做的,所以我们在“虚拟的人”中写好了这个方法,但每个人都有不同的吃饭方法,有用筷的也有用叉的,有要吃米饭的也有要吃面食的。所以如果我们要描述不同人的吃饭的过程,就要把这个过程放到具体的子类中去了,因为每个人都不一样嘛。同样一个方法,子类都有不同的实现方式,这个就是多态了,多态有助于程序的灵活性。
注意:子类中如果重写了父类的方法(多态),那么父类中的这个方法将不会再调用。
1.好处:
简化了编程接口。它容许在类和类之间重用一些习惯性的命名,而不用 为每一个新加的函数命名一个新名字。
简化代码
如果函数/方法参数中使用的是父类的类型,可以传入父类、子类的对象
局限性:父类类型的变量,不能直接调用子类特有的方法。必须强转为子类类型的变量,才能直接调用子类特有的方法
2、编译时多态:其实就是重载,是对非虚成员来说的,系统在编译时,根据不同签名来决定实现何种操作。
3、运行时多态:也就是重写,是通过虚成员实现的,指直到系统运行时,才根据实际情况决定实现何种操作。
对与第一种情况很容易就能理解,不同签名就有不同的实现
而第二种情况是在继承的基础上实现的,子类继承基类时,通过对虚成员的重写,然后利用基类引用子类对象,那么不同的子类对象实现相应的不同操作。
这样的好处是显而易见的,利用基类类型定义一次,然后给它传入不同的子类对象,然后实现不同的操作,提高了效率。
以上就是极客学院C#视频教程的资料推荐的详细内容!
相关阅读 >>
更多相关阅读请进入《csharp》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。