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

Java继承和组合

除了继承,“组合”也能实现代码的复用。“组合”的核心是“将父类对象作为子类的属性”。

继承的代码用组合重新实现:

public class Test{
    public static void main(String[] args){
        Student s = new Student("小明",172,"Java");
        s.person.rest();   //s.rest();
        s.study();
    }
}

class Person{
    String name;
    int height;
    public void rest(){
        System.out.println("休息一会!");
    }
}

class Student /*extends Person*/ {
    Person person = new Person();
    String major;  //专业
    public Student(String name,int height,String major){
        //拥有父类的对象,通过这个对象间接拥有它的属性和方法
        this.person.name = name;  //this.name = name;
        this.person.height = height;  //this.height = height;
        this.peron.rest();
        
        this.major = major;
    }
}

组合比较比较灵活。继承只能有一个父类,但是组合可以有多个属性。所以,有人声称“组合优于继承,开发中可以不用继承”。

个人认为,对于“is - a”关系建议使用继承,“has - a”关系建议使用组合。

比如:笔记本中有芯片,笔记本和芯片的关系是“has - a”关系,使用组合更好;而Student和Person的关系是“is - a”关系,使用继承更好。


http://www.kler.cn/a/234157.html

相关文章:

  • goframe开发一个企业网站 验证码17
  • 【Java语言】String类
  • 2024年11月12日Github流行趋势
  • MFC工控项目实例二十九主对话框调用子对话框设定参数值
  • 今日 AI 简报 | 开源 RAG 文本分块库、AI代理自动化软件开发框架、多模态统一生成框架、在线图像背景移除等
  • 远离生成式AI大乱斗,SAS公司揭示亚太区千亿AI市场蓝图
  • 【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏17(附项目源码)
  • 如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题
  • 如何从 iPhone 恢复已删除的视频:简单有效方法
  • 【漏洞复现】多语言药房管理系统MPMS文件上传漏洞
  • [论文总结] 深度学习在农业领域应用论文笔记12
  • LayUI中表格树折叠 --
  • Redis -- 安装客户端redis-plus-plus
  • 形态学算法之边界提取的简单python实现——图像处理
  • C# Socket通信从入门到精通(21)——Tcp客户端判断与服务器断开连接的三种方法以及C#代码实现
  • 1.5 Binance_interface API 币本位合约行情
  • Java基础知识总结(持续更新中)
  • 第一篇【传奇开心果微博文系列】Python微项目技术点案例示例:pillow库实现毛笔字春联
  • 华为数通方向HCIP-DataCom H12-821题库(单选题:461-480)
  • 【RabbitMQ(二)】:Exchange 详解 | Message Convert 消息转换器
  • (注解配置AOP)学习Spring的第十七天
  • 每日五道java面试题之java基础篇(五)
  • 43.1k star, 免费开源的 markdown 编辑器
  • grafana+prometheus+hiveserver2(jmx_exporter+metrics)
  • [AIGC] Spring Gateway:一个简单 yet powerful API 网关
  • 每日五道java面试题之java基础篇(二)