应用组合的方式实现继承关系

package com.Summer_0426.cn;

/**
 * @author Summer
 * 应用实例:应用组合的方式实现继承关系
 * 动物类Animal
 * 方法:心跳
 * 动物类Dog
 * 方法:run
 */
class Heart{
    public void beat(){
        System.out.println("心跳");
    }
}

class Dog{
    Heart heart = new Heart();//成员变量即初始化对象
    public void run(){
        System.out.println("跑");
    }
}

public class AnimalTest01 {

    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.heart.beat();

    }

}

原文地址:https://www.cnblogs.com/summerdata/p/10777109.html

时间: 2024-11-13 09:00:26

应用组合的方式实现继承关系的相关文章

UML依赖,关联,组合,聚合,继承,实现的关系

这几天在看netty的源码想根据源码把netty的UML架构图跟时序图画出来,所以就复习了一下大学时代的一些UML基础知识,首先,我们要搞清楚以下几个概念: 继承:这个就不要多说了,写过java代码的人一般都很容易理解继承这个概念. 实现:这个可能有些初学者有些模糊,因为大家一般会认为实现跟继承是一样的概念,在java里面 继承使用的关键字是extends而实现使用的关键字是implements.说到这里我想大家都明白了吧. 依赖:在理解这个概念之前我们先去百度百科里面看一下依赖的中文解释:依靠

【OC学习-13】什么是组合,它和继承是什么关系?

继承有两缺点:(1)当层级越来越多时,假如每一个层级都有实例变量,那么最下层的子类继承的实例变量会超级多,沉重.(2)当消息传递自子类往上时.层级越多,效率越低下. 所以就有了组合.说实话区分继承和组合真不是那么easy.所谓两者是"is a"关系则是继承,两者是"has a"则是组合,还是模糊.事实上.这两个概念无须区分十分明显,仅仅须要记住:a)组合和继承实现的功能几乎相同,可是实现的形式不一样,记住各自的形式就可以:b)尽量用组合. 很多其它差别详见:http

继承关系中的第三种方式:利用<union-subclass>(补充)

继承关系中的第三种方式:利用<union-subclass>   代码:   映射文件(其他的代码和其他继承关系相同)   Person.hbm.xml   <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/

重新认识java(四) — 组合、聚合与继承的爱恨情仇

有人学了继承,认为他是面向对象特点之一,就在所有能用到继承的地方使用继承,而不考虑究竟该不该使用,无疑,这是错误的.那么,究竟该如何使用继承呢? java中类与类之间的关系 大部分的初学者只知道java中两个类之间可以是继承与被继承的关系,可是事实上,类之间的关系大体上存在五种-继承(实现).依赖.关联.聚合.组合. 接下来,简单的分析一下这些关系. 继承(实现) 对于类来说,这种关系叫做继承,对于接口来说,这种关系叫做实现.继承上一篇文章已经详细的讲解过了,至于实现,我想大家也都知道是怎么回事

7,装饰者模式(Decorator Pattern)动态的给一个对象添加一些额外的职责。就增加功能来说,此模式比生成子类更为灵活。继承关系的一个替换方案。

装饰( Decorator )模式又叫做包装模式.通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案. 装饰模式就是把要添加的附加功能分别放在单独的类中,并让这个类包含它要装饰的对象,当需要执行时,客户端就可以有选择地.按顺序地使用装饰功能包装对象. 在装饰模式中的各个角色有: 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象. 具体构件(Concrete Component)角色:定义一个将要接收附加责任的类. 装饰(Decorator)角色

js继承关系

跟传统面向对象语言比起来,js在继承关系方面比较特别,如果第一次看恐怕会有些抓狂,偶就是这样(又透露小白本质#=_=),从哪里说起好呢?函数调用? js中函数的调用方式大致可分以下几种: 1. 普通函数,直接调用 function Hi(){ alert(233); } Hi(); var f = function(){ alert(666); }; f(); 2. 作为对象的方法调用 var obj = { x:1, m:function(){ alert("hello"); } }

类的继承、派生、组合、菱形的继承、多态

类的继承 继承是一种新建的类的方式,新建的类成为子类,被继承的类称为父亲 继承的特性是:子类会遗传父亲的属性 继承是类与类之间的关系 使用继承目的,可以减少代码的咒余 在python中,父类和子类只有在继承的时候才会产生 继承是为了拿到父类的所有东西 class Parent_Foo: def __init__(self,first_name,money,car,house) self.first_name = first_name self.car = car self.house =hous

QObject提供了QMetaObject元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化

元类信息(相当于RTTI和反射),信号与连接,父子关系,调试信息,属性,事件,继承关系,窗口类型,线程属性,时间器,对象名称,国际化其中元类又提供了:classInfo,className,构造函数,多重祖先元类,method, property, Enumerator, Signal, Slot等等 http://doc.qt.io/qt-5/qobject.html http://doc.qt.io/qt-5/qmetaobject.html 我感觉Qt的出现,除了提供GUI以外,主要就是提

EF-CodeFirst 继承关系TPH、TPT、TPC

继承关系 面向对象的三大特征之一:继承 ,在开发中起到了重要的作用.我们的实体本身也是类,继承自然是没有问题.下面开始分析 EF里的继承映射关系TPH.TPT.TPC 现在我们有这样一个需求,用户里要有一批超级用户,他们有着与生具来的优越.可以体验到更高级的服务.但是超级用户也是用户,可以去继承我们的普通用户类 (其实个人感觉不是很合理,因为我们有UserRole表,给一个超级用户的角色就可以了.这里仅做演示) /// <summary> /// 超级用户 /// </summary&g