组合:像扩展哪个类的功能,就将那个类的对象的引用作为构造方法的形参。
定义一个Person类

class Person{void eat(){System.out.println("人吃饭");}
}
class Student extends Person{void eat(){super.eat();System.out.println("学生在食堂吃饭");}
}

定义一个SuperMan,不继承Person还想拥有Person的功能

class SuperPerson{Person person;public SuperPerson(Person person) {this.person = person;}void eat(){person.eat();System.out.println("超人吃20个汉堡包!");}
}

测试类

public class Test {public static void main(String[] args) {Person person = new Person();SuperPerson person1 = new SuperPerson(person);person1.eat();new SuperPerson(new Student()).eat();}
}


从结果看,超人类可以不继承父类吃饭功能还能拥有子类吃饭功能。
因此,总结。
共同点:继承和组合:都是在现有类的基础上扩展类的行为
不同点:组合既可以实现Person 实例,也可以实现Person 的子类的对象。
组合优于继承,但是继承是多态的基础

一文读懂之java组合相关推荐

  1. 【一文读懂】Java代理模式

    1 定义 定义:为其他对象提供一种代理以控制对这个对象的访问.在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理对象和目标对象通常会继承 ...

  2. Java必备基础一——一文读懂的Java基础中的基础

    内容虽然很简单,但是由于自己的基础很差,练习又太少,在编程这件事情上总是十分吃力,故记于此,长于心. 写在最后,打个鸡血,共勉:真正能让你走远的,都是自律.积极和勤奋. 程序人生,你可以靠努力去实现的 ...

  3. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  4. java中date类型如何赋值_一文读懂java中的Reference和引用类型

    简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型.java为引用类型专门定义了一个类叫做Reference.Reference是跟jav ...

  5. JVM(一)一文读懂Java编译全过程

    一文读懂Java编译全过程 java代码首先要通过前端编译器编译成.class字节码文件,然后再按一定的规则加载到JVM(java 虚拟机)内运行,有三种运行方式,解释模式(javac).编译模式(C ...

  6. 腾讯资深架构师干货总结:一文读懂大型分布式系统设计的方方面面

    1.引言 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ.微信.淘宝.那么,一个大型互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂? ...

  7. 一文读懂字符编码(ASCII、ISO 8859、GB系列、Unicode)

    一文读懂字符编码(ASCII.ISO 8859.GB系列.Unicode) 一.字符编码相关组织 1.1 ANSI 美国国家标准学会 1.2 Ecma 国际 1.3 ISO/IEC 1.4 统一码联盟 ...

  8. ​一文读懂EfficientDet

    一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...

  9. 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制

    https://www.toutiao.com/a6663809864260649485/ 作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议 ...

最新文章

  1. WPF 与Surface 2.0 SDK 亲密接触–LibraryContainer 篇
  2. arm linux gcc 4.6.3,编译gcc-4.6.3
  3. 报名 | DeeCamp2019:实战AI 铸造定雨神针
  4. XXX管理平台系统——项目教训
  5. 用python写一个记账小程序_python实现日常记账本小程序
  6. servlets_jQuery Ajax – Servlets集成:构建完整的应用程序
  7. C#AE创建FeatureDataset/创建数据、集要素集
  8. php制作的ios端 跳转url,ThinkPHP 简易开发思路 MVC和URL跳转
  9. mysql 5.7.13 log_有关binlog的那点事(二)(mysql5.7.13)
  10. C#实现Ping命令
  11. 外国视频伪原创工具 视频MD5修改器破解版
  12. css怎么设置鼠标手势?
  13. 2022-2028全球新冠检测试剂行业调研及趋势分析报告
  14. 相邻数对和Python学习---多维缩减
  15. db2实例和数据库关系
  16. 量化交易必看电影之《蜂鸟计划》
  17. WIFI密码破解 WIFI万能钥匙 显示连接密码去除广告优化版
  18. 2011 4 1 中国最具影响力的50位商界领袖
  19. 算法设计与分析——树
  20. vue-elementui-admin项目 woff,tff字体 404处理

热门文章

  1. mysql函数中打印信息_mysql信息函数
  2. HTML添加css文件和js文件
  3. 宝哥哔哔|去中心化借贷协议Trister‘s Lend主网已经上线全面内测已经开始!
  4. PowerPhotos 2.0.2原版英文(照片管理软件)
  5. 让自己的网站实现在线编辑office文档
  6. 为了救自己,天涯和简书做起了区块链,新闻媒体呢?
  7. 从零学习Vue - 02模板语法、el与data两种写法、mvvm模型、数据代理
  8. 华南理工计算机应用在线答题,华南理工大学计算机应用基础随堂练习题目及答案...
  9. R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图
  10. 计算机领域经典故事,[转载]计算机的工作原理(1):一个经典的故事