记住2句话(常识),像个正常人思考! 1.“  is-a ”关系 用 继承! 学生是人,学生继承人这个类, 2. “has-a ”关系 用 组合!电脑有显卡,那么我们就在计算机类中增加显卡属性来复用显卡类的代码. 使用继承的代码 /** *继承的好处 * 1 OOP面向对象 编程 提高代码复用性 * 2 OOD面向对象 设计 对某一类的抽象 实现对现实世界更好的建模 * 类继承 是单继承 构造方法 不继承 java.lang.object是根基类 如果你继承后边什么不写 他会继承根基类 接口是多…
转载:http://blog.csdn.net/ocean181/article/details/6117369 UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别 三者描述对象的附属[也就是依赖]关系: 关联<聚合<组合, 依赖关系是逐渐加强的. inheritance: "a kind of": 猫是一种动物,说明猫从动物继承: association: 两者之间存在某种关联即可,很弱的关系,如student…
今日内容: 1.组合 2.菱形继承 3.多态与多态性 昨天内容重点回顾: 1)调用也叫实例化:发生了2件事  1.创造空对象  2.触发对象下的__init__方法,然后将p连同参数一同传给init 2)绑定关系  1.类的调用就是普通函数  2.大多数给对象调用的,绑定给对象用的    绑定给谁就应该由谁来调用,谁来调用就会将谁当做第一个参数自动传入 精髓:对象不仅是一系列数据(自己独有的+与其他对象共有的),还包含专门操作该数据的方法 1.组合 1.什么是组合    组合就是一个类的对象具备…
面向对象第二个特征-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java中的继承概述 1>.继承概述 多个类种存在相同属性和行为时,讲这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只要继承单独的那个类即可. 多个类可以称为子类,单独的这个类称为父类或者超类. 子类可以直接范围父类中的非私有的属性和行为. 通过extends关键字让类与类之间产生继承关系. 继承的出现提供了代码的复用性,让类鱼类之间产生了关系,提供了多态…
1. 什么是组合(composition)? 组合(composition)是一种类型之间的关系,这种关系当一种类型的对象包含另外一种类型的对象时就会产生.举个例子: class Address { ... }; // where someone lives class PhoneNumber { ... }; class Person { public: ... private: std::string name; // composed object Address address; //…
使用JAVA这门OO语言,第一要义就是,如果类不是专门设计来用于被继承的就尽量不要使用继承而应该使用组合 从上图2看,我们的类B复写了类A的add喝addALL方法,目的是每次调用的时候,我们就能统计调用类A的次数,实际上我们调用了一次类B 但是实例对象b的count变量却变成了2,解释的原因在图1里面我已经做了黑板画了,这个例子是effective Java里面的一条忠告,十分有意义, 少用继承,除非类是专门被用于来继承的,例如安卓开发里面的activity类是专门被设计用于继承的,这些类可以…
在C++中,所谓"继承"就是在一个已存在的类的基础上建立一个新的类.已存在的类(例如"马")称为"基类(base class )"或"父类(father class )".新建的类(例如"公马")称为"派生类(derived class )"或"子类(son class )". 以上介绍的是最简单的情况:一个派生类只从一个基类派生,这称为单继承(single inhe…
OC无法完全先C++使用多继承,但可以采用组合的模式来代替继承模式.(协议实现)实现多继承的代码:举例现在ClassC需要继承ClassA中methodA.ClassB中methodB,具体的代码为: //定义ClassA以及其methodA @interface ClassA : NSObject {} -(void)methodA; @end//定义ClassB以及其methodB@interface ClassB : NSObject {} -(void)methodB; @end//定义…
  * Rectangle继承Shape function Shape() { this.x = 0; this.y = 0; } Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.log("Shape moved ("+this.x+","+this.y+")."); } function Rectangle() { Shape.call(this…
关于继承: 1.为了重用代码——引入继承. 2.父类的某些方法反正要被重写,在父类里实现在也无用——引入抽象类. 3.把抽象类里的抽象方法抽出来——引入接口.…