Java 学习和实践笔记(26):组合(component)的含义以及与继承(extends)的关系

组合的两个作用:

1)通过将父类对象作为子类的属性

2)通过第1点的作用,实现了代码复用。

示例代码:

public class TestComponent {public static void main(String[] args) {Student2 s1= new Student2("jason",180,"Java");System.out.println(s1.person2.name);System.out.println(s1.person2.height);System.out.println(s1.major);}
}class Person2 {String name;int height;public void rest(){System.out.println("休息!");}
}class Student2 {Person2 person2 = new Person2();//Person2 是一个引用类型,类似于int这样的类型声明// person2 是一个对象、是一个变量、是一个属性,类似于int a 里的a//new Person2()作用,就是新建了一个Person2 这个(父)类的对象//因为Person2先于Student2,所以叫它为父类String major;//专业、public void  study(){System.out.println("学习!");person2.rest();//通过person2这个对象,来使用Person2类中的方法rest()}public Student2(String name, int height, String major) { //定义一个学生的对象构造器this.person2.name = name;//通过person2这个对象,来使用Person2类中的属性namethis.person2.height = height;//通过person2这个对象,来使用Person2类中的属性heightthis.major = major;}
}

运行结果:、

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

对于“is -a”关系建议使用继承,“has-a”关系建议使用组合。所以这里有一个在建模时的逻辑关系的问题。
比如:上面的例子,Student is a Person这个逻辑没问题,但是:Student has a Person就有问题了。这时候,显然继承关系比较合适。
再比如:笔记本和芯片的关系显然是“has-a”关系,使用组合更好。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/713386.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

灯塔:HTML笔记

网页由哪些部分组成? *文字 图片 音频 视频 超链接 程序员写的代码是通过浏览器转换成网页的 五大浏览器有哪些? *IE浏览器 *火狐浏览器(Firefox) *谷歌浏览器(Chrome) *Safari浏览器 *欧朋浏览器&…

NENU OJ算法2例题||搜索E

NENU OJ算法2例题 合集原文指路 算法2搜索E 1281: E001 数的划分 题目描述 将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。…

【数据结构与算法】动态规划法解题20240302

这里写目录标题 一、198. 打家劫舍1、动态规划五部曲 二、213. 打家劫舍 II 一、198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间…

【python】双十一美妆数据分析可视化 [聚类分析/线性回归/支持向量机](代码+报告)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【JavaSE】 P165 ~ P194 抽象方法,抽象类,接口,接口内容,多接口实现和父类继承,多态,向上转型,向下转型

目录 抽象抽象的概念抽象方法和抽象类的格式抽象方法和抽象类的使用抽象方法和抽象类的注意事项● 练习1. 写一个父类图形类,其中有方法,功能计算面积为抽象方法。2. 抽象类继承。判断对错,没错的分析运行结果3. 发红包,群内用户类作为父类,有…

NX二次开发:ListingWindow窗口的应用

一、概述 在NX二次开发的学习中,浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要,因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…

鸿蒙系统的开发与学习:一、安装工具与处理报错

前言: 鸿蒙系统的学习与记录。 1 、使用开发工具:deveco-studio 1)这个是工具的安装 2)这个是工具包,里面包含了 obpm,如果你装不上这个,可以使用工具包内部的 2、安装 官方安装教程&#xff…

前端学习第三天-css基础

1. CSS简介 从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只包含很少的显示属性。 随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能…

USB4之ASM2464PD与ASM2464PDX兼容与运用

首先在NVMe上运用: 一:ASM2464PD(现在可以做带PD的方案) 二:ASM2464PDX 1: Application Guide- CFX card reader NVMe SSD 2:ASM2464PDX Application Guide- NVMe SSD x4 with data clone 三&#xff…

C习题003:球筐投球(一排)

题目 输入样例 在这里给出一组输入。例如&#xff1a; 5 3 7 5 7 7 3 1 5 3 1 5 2 4 4 4输出样例 在这里给出相应的输出。例如&#xff1a; 12 10 12 16 8代码长度限制 16 KB 时间限制400 ms 内存限制 64 MB 栈限制 8192 KB 代码 #include<stdio.h> int main() {int…

新一代湖仓集存储,多模型统一架构,高效挖掘数据价值

星环科技TDH一直致力于给用户带来高性能、高可靠的一站式大数据基础平台&#xff0c;满足对海量数据的存储和复杂业务的处理需求。 同时在易用性方面持续深耕&#xff0c;降低用户开发和运维成本&#xff0c;让数据处理平民化&#xff0c;助力用户以更便捷、高效的方式去挖掘数…

jmeter如何请求访问https接口

添加线程组http请求 新建线程组&#xff0c;添加http请求 填入协议&#xff0c;ip&#xff0c;端口&#xff0c;请求类型&#xff0c;路径&#xff0c;以及请求参数&#xff0c;查看结果树等。 然后最关键的一步来了。 导入证书 步骤&#xff1a;获取证书&#xff0c;重新生…

基于SSM的高校竞赛和考级查询系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的高校竞赛和考级查询系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Sp…

Java中的动态代理与Spring AOP编程

第一章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;在Java里&#xff0c;动态代理和Spring AOP&#xff08;面向切面编程&#xff09;是两个能让代码更加灵活、更加干净的强大工具。作为一名Java程序员&#xff0c;小黑觉得掌握它们对于写出高质量的代码来说非常…

通过GitHub探索Python爬虫技术

1.检索爬取内容案例。 2.找到最近更新的。(最新一般都可以直接运行) 3.选择适合自己的项目&#xff0c;目前测试下面画红圈的是可行的。 4.方便大家查看就把代码粘贴出来了。 #图中画圈一代码 import requests import os import rewhile True:music_id input("请输入歌曲…

鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:位置设置)

设置组件的对齐方式、布局方向和显示位置。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 align align(value: Alignment) 设置容器元素绘制区域内的子元素的对齐方式。 卡片能力&#xff1a; 从API…

【系统分析师】-系统配置与性能评价

1、性能指标 主频&#xff1a;又称时钟频率&#xff0c;1GHZ表示1秒有1G个时钟周期 1s10^9ns 主频外频 * 倍频 时钟周期 主频的倒数指令周期&#xff1a;取出并执行一条指令的时间 总线周期&#xff1a;一个访存储器或IO操作所用时间平均执行周期数&#xff1a;CPI表示…

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题?

如何解决幻兽帕鲁/Palworld服务器联机游戏时的丢包问题&#xff1f; 等待服务器维护&#xff1a;首先&#xff0c;确保网络连接稳定&#xff0c;然后查看游戏官方或社区论坛&#xff0c;了解是否有服务器维护的消息。这是解决丢包问题的一种直接且有效的方法。 更新显卡驱动&a…

Siemens-NXUG二次开发-获取prt中体与类型、实体面与类型、实体边与类型、边上点的Tag标识[Python UF][20240302]

Siemens-NXUG二次开发-获取prt中体与类型、实体面与类型、实体边与类型、边上点的Tag标识[Python UF][20240302] 1.python uf函数1.1 NXOpen.UF.Obj.CycleObjsInPart1.2 NXOpen.UF.Obj.AskTypeAndSubtype1.3 NXOpen.UF.Modeling.AskBodyFaces1.4 NXOpen.UF.Modeling.AskFaceEdg…

RISC-V特权架构 - 机器模式下的异常处理

RISC-V特权架构 - 机器模式下的异常处理 1 进入异常1.1 从mtvec 定义的PC 地址开始执行1.2 更新CSR 寄存器mcause1.3 更新CSR 寄存器mepc1.4 更新CSR 寄存器mtval1.5 更新CSR 寄存器mstatus 2 退出异常2.1 从mepc 定义的PC 地址开始执行2.2 更新CSR 寄存器mstatus 3 异常服务程…