码迷,mamicode.com
首页 > 其他好文 > 详细

9. 实现类复用的两个手段——继承与组合

时间:2019-06-09 19:43:35      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:nbsp   补充   arm   适用于   person   ima   方式   表达   父类   

一、实现类复用概述

1. 如果需要复用一个类,可以把这个类当成基类来继承

  • 如果访问权限允许,子类可以直接访问父类的成员变量和方法,相当于子类可以直接复用父类的成员变量和方法
  • 继承带来高度复用的同时,也严重地破坏了父类的封装性
  • 如果只是出于类复用的目的,并不一定需要使用继承,完全可以使用组合来实现

2. 如果需要复用一个类,还可以把这个类当成新类的组合成分

  • 新类可以直接复用这个类的public成员变量和方法

 

二、实现类复用的补充说明

1. 继承方式中,子类可以直接获得父类的public方法,程序使用子类时,将可以直接访问该子类从父类那里继承到的方法

2. 组合把旧类对象作为新类的成员变量组合进来,用以实现新类的功能

  • 用户看到的是新类的方法,而不能看到被组合对象的方法,故通常需要在新类里使用private修饰被组合的旧类对象

补:仅从类复用的角度来看,父类的功能等同于被组合的类,都将自身的方法提供给新类使用。

 

三、用继承还是组合?

1. 继承要表达的是“是(is-a)”的关系,而组合表达的是“有(has-a)”的关系

  • 继承是对已有的类做一番改造,以此获得一个特殊的版本,即将一个较为抽象的类改造成能适用于某些特定需求的类,如Animal类和Wolf类
  • 如果两个类之间有明确的整体、部分的关系,此时就应该采用组合关系来实现复用,如Person类复用Arm类时就应使用组合的方式

9. 实现类复用的两个手段——继承与组合

标签:nbsp   补充   arm   适用于   person   ima   方式   表达   父类   

原文地址:https://www.cnblogs.com/xzxl/p/10994444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!