当前位置: 首页 > news >正文

一文读懂之java组合

组合:像扩展哪个类的功能,就将那个类的对象的引用作为构造方法的形参。
定义一个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 的子类的对象。
组合优于继承,但是继承是多态的基础


http://www.taodudu.cc/news/show-4565073.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 读书笔记21:解释器模式
  • 【Python】读书笔记:Python基础教程-项目1-即时标记
  • java核心技术读书笔记—继承
  • “Let’s Eat Grandma”:标点符号(句法树)增强语义表达,用于情感分析
  • Java编程思想读书笔记——第十章:内部类
  • Python基础教程(第2版)读书笔记
  • 基于安卓的公司员工考勤系统的设计与实现
  • 职工考勤管理系统
  • 员工考勤管理系统html,一种员工考勤管理系统的制作方法
  • 内存的类型
  • Linux命令_Note1
  • 计算机体系结构——内存
  • 《Unity Shader入门精要》笔记02 第1章+第2章
  • 30天自制OS学习笔记 (四)C语言与画面显示的练习
  • 自制操作系统日志——第四天
  • Linux Graphics 周刊(第 5 期)
  • unity3D 移动平台性能优化
  • 计算机外围设备
  • 轻量级模型设计/部署
  • 30天自制操作系统学习-第8天
  • 【操作系统】30天自制操作系统--(9)叠加处理
  • C语言VRAM字符串平滑移动,航空数字化仪表中动画显示技术的应用
  • 第4天:C语言与画面显示的练习
  • 显卡 内存分配 linux,【原创】Linux环境下的图形系统和AMD R600显卡编程(4)——AMD显卡显存管理机制...
  • 用C语言开发NES游戏(CC65)03、VRAM缓冲区
  • dm8148 开发只boot启动参数vram=128简介
  • 虚拟机服务器CPU授权,vSphere5全新的许可授权方式——CPU许可+vRAM授权
  • 8位色320*200分辨率下的屏幕坐标与VRAM地址计算
  • VRAM
  • CCE to REG bundle