关于继承

一、类与类的关系:

类与类之间的关系有以下几种

  1. 继承
  2. 聚合
  3. 依赖

二、什么是继承

继承是面向对象中“类与类”的一种关系。

继承的的类 叫做子类、派生类

被继承的类 叫做父类、基类或者超类。

 

子类可以实现对基类的扩展和改写:

  • 一是通过在子类中添加新方法
  • 二是通过对父类方法的重新改写,既是覆写(override)

继承的本质:

  • 继承是可以传递的,子类是对父类的扩展,必须继承父类方法,同时可以添加新方法
  • 子类可以调用父类方法和子端,但父类不能调用子类的方法和字段
  • 子类不光继承父类的公有成员,还继承了父类的私有成员,只是在子类中不被访问。

 

在.Net中,继承按照其实现的方式不同,分为以下类别:

  • 实现继承:派生类继承了基类所有的属性和方法,并且只有一个基类,在.Net中,System.Object 是所有类型的最终基类,这种继承方式叫 实现继承。 实现继承通常情况下表现为抽象类的继承。
  • 接口继承:派生类继承了接口的方法签名。

 

实现继承和接口继承的异同关系:

  • 抽象类适合于有族层的类之间的关系;接口适合于为不同的类提供通用的功能
  • 抽象类偏重于 IS-A 式的关系;而接口着重于Can-Do 的关系
  • 抽象类多定义对象的属性;接口多用于定于对象的行为
  • 如果预计会出现版本问题,如需要添加新的成员,可以创建“抽象类”;而往接口中添加新成员会强制要求修改所有的派生,并且重新编译。
  • 值类型是密封的,所以只能实现接口而不能继承类

 

继承的缺点:

  • 继承可能造成子类的无限膨胀,不利于类体系的维护和安全
  • 继承的子类对象确定与编译期,无法满足需要运行期才能确定的情况,而类的聚合很好的解决了这个问题
  • 随着继承层次的复杂化和子类的多样化,不可避免地回出现对父类的无效的继承或者有害继承。所以子类部分的继承父类的方法和属性,更能适应实际的设计需求。

 

三、关于Adapter模式

......

 

四、归纳总结

  • 密封类(Sealed)不可以被继承
  • 实现单继承,接口多继承
  • 继承的层次应该有所控制,否则类型之间的关系维护会耗费很大的精力
  • 继承关系中,我们更多的关注其共性而不是特性。共性是层次复用的基础,特性是系统扩展的基点。
  • 从宏观来看,继承多关注于共同性,而多态着眼于差异性。
  • 面向对象的基本原则: 多聚合 少继承 低耦合 高内聚
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值