黑马程序员学习笔记--继承总结

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

继承(是指类与类之间的关系。)
车 (Vehicle) 
—卡车(Truck)
轻型卡车
重型卡车
— 轿车 (Car)
--小轿车
面包车
如何判断一个继承关系是否合理?子类 is a 父类。
卡车和轿车都是车,都有轮子、发动机。但是卡车又能拉货,轿车能拉人
Base Class→基类、Parent Class→父类
Derived Class→派生类、Child Class→子类
为什么要继承?继承带给我们的好处?
代码重用
LSP里氏替换原则、多态。(程序的可扩展性、灵活性)方法重写override。虚方法的原理:虚方法表。
子类继承父类的属性和方法,使创建子类变得很简单,实现了代码重用、以及多态。
类的单根继承性、传递性、继承时构造函数的问题。构造函数不能被继承。
所有的类都直接或间接的继承自object。查看IL代码
 
继承带给我们的两个好处:
1.代码重用
2.多态(里氏替换原则LSP)
 
访问修饰符
1.当写好一个类以后,默认会存在一个没有参数的构造函数(即便我们不写构造函数,也会存在这么一个无参的构造函数)
2. 当手动添加一个构造函数以后,会将默认的无参数的构造函数覆盖掉。
3.类的构造函数是不能被继承的。只能在子类中去调用父类的构造函数。

private:只能在本类中访问

protected:当前类内部以及所有的子类中(子类内部)。不区分是否在同一个程序集中。

internal:在当前程序集内部可以访问。跨程序集则无法访问.【protected与internal没有可比性。】

proteced internal :在当前程序集中或者是在子类中都可以访问。综合了一下protected与internal的特性。

public :能再任何地方访问。

注意:访问级别约束
子类的访问级别不能比父类的高。(会暴露父类的成员)
类中属性或字段的访问级别不能比所对应的类型访问级别高。
方法的访问级别不能比方法的参数和返回值的访问级别高。
用于解决“可访问性不一致”的错误


继承还有一个重要的特性,父类对象可以引用子类实例。

儿子继承父亲,儿子又把管理自己事务的权利交给父亲,那么父亲就可以代表儿子处理事务,这就是父类对象引用子类实例。现在生活中,父母可以代表儿子处理事务,总公司可以代表子公司生命权利。

继承的时候,构造函数是不能被继承的。(构造函数不能被继承。)

将子类对象赋值给父类对象,所得到对象是这样的一个对象:

它是一个编译是为父类对象,但运行却是一个子类对象。具体特征如下:
  1.被声明为父类对象
  2.拥有父类属性
  3.占用子类的内存空间
  4.子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.


 c#中任何一个类都是继承自object类的。
如果一个类没有显示继承自任何类,则默认继承自object类。
如果显示的指定了当前类继承自某个类,则将覆盖默认继承的object类。

 继承的传递性:
SuperMan继承了object,这时,SuperMan类中就有了从object类中继承下来的4个方法ToString()、GetType()、GetHashCode()、Equals()。
然后Person又继承了SuperMan,这时,Person会将SuperMan中的那4个方法再继承下来。由于那4个方法是在object中的,所以相当于Person类间接从Object类中继承下来了成员
这个就叫继承的传递性。
 




------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值