对象的组合复用学习笔记

简单说,就是不同类的多个对象之间彼此调用对方的方法和变量,可能会多次调用,所以叫复用(重复),所有对象本身具有独立的功能(方法),共同完成一项任务的一部分,或者多个类的对象协助一个类完成一个任务。

多次调用存在 对象A 使用了对象B{b()}中的方法b(),然后方法C又使用了方法A中 通过调用方法B得到的变量或或方法,这算是一种比较难理解的。有点像俄罗斯套娃。

Circle类:

package thirdproject;public class Circle {double radius,area;void setRadius(double r) {radius = r;}double getRadius() {return radius;}double getArea() {area = 3.14*radius*radius;return area;}
}

Cicular类: 

package thirdproject;public class Circular {
Circle bottom;//定义一个Circle类型地bottom
double height;
void setBottom(Circle c) {//方法,获取底圆面积,形参是Circle类型的bottom = c;
}
void setHeight(double h) {//方法,获取圆锥的高height = h;
}
double getVolume() {//方法,计算体积if(bottom == null)return -1;//底面积没赋值,返回错误-1elsereturn bottom.getArea()*height/3.0;//返回计算得得圆锥的体积
}
double getBottomRadius() {//返回底面圆的半径return bottom.getRadius();//调用Circle类的对象bottom的getRadius()方法,
}
public void setBottomRadius(double r) {bottom.setRadius(r);
}
}

主类: 

package thirdproject;public class Example4_8 {public static void main(String []args) {Circle circle = new Circle();//Java系统分配内存单元给circlecircle.setRadius(10);/*将10传递给r,此时形参暂时变实参,*被方法调用,然后在circle的方法setRadius中,将r的 值10赋值给成员变量radius*/Circular circular = new Circular();//Java系统分配内存单元给circularSystem.out.println("circle的引用:"+circle);System.out.println("圆锥bottom的引用:"+circular.bottom);//尚未赋值,因此为空nullcircular.setHeight(5);circular.setBottom(circle);//此处发生:将circle对象的引用(传值)传递给circular的bottom,注意!!传的是circle的引用/*此时的circular.bottom和circle具有相同的实体radium* 这里相当于把使用circlr对象下的方法和成员变量的权限给了circular的bottom*/System.out.println("circle的引用:"+circle);System.out.println("circular对象的变量bottom的引用:"+circular.bottom);//输出结果和上面circle一样,bottom引用的实体内容和circle引用的一样,都是实体变量radiumSystem.out.println("圆锥的体积:"+circular.getVolume());//调用circular的计算体积的方法System.out.println("修改对象cirlce中的值,circular中的bottom的值也会发生变化,原因是,\ncircle和circular都是引用radium这个实体变量的哈希码,也就是地址位置等信息\n因此输出的结果都会变化");circle.radius=20;System.out.println("circle中的r值circle.radius="+circle.radius);System.out.println("同时circular中的bottom的值circular.bottom="+circular.bottom.getRadius());System.out.println("重新创建circle");circle = new Circle();System.out.println("circle的引用:"+circle);//新创建的这个circle不影响原来被bottom引用的那个circle,原来传递的值不发生变化。}
}

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

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

相关文章

ChatGPT浪潮来袭!谁先掌握,谁将领先!

任正非在接受采访时说 今后职场上只有两种人, 一种是熟练使用AI的人, 另一种是创造AI工具的人。 虽然这个现实听起来有些夸张的残酷, 但这就是我们必须面对的事实 📆 对于我们普通人来说,我们需要努力成为能够掌握…

基于STM32的智慧农业管理系统设计与实现

文章目录 一、前言1.1 项目介绍【1】项目功能【2】设计实现的功能【3】项目硬件模块组成 1.2 设计思路1.3 传感器功能介绍1.4 开发工具的选择 二、EMQX开源MQTT服务器框架三、购买ECS云服务器3.1 登录官网3.2 购买ECS服务器3.3 配置安全组3.4 安装FinalShell3.5 远程登录到云服…

xsslabs靶场通关(持续更新)

文章目录 前言一、level1思路实现 二、levle2思路 三、level3思路实现 四、level4思路实现 五、level5思路实现 六、level6思路实现 七、level7思路实现 八、level8思路实现 九、level9思路实现 前言 本篇文章将介绍在xsslabs这个靶场(在不知道源码的前提下&#x…

Linux从0到1——Linux环境基础开发工具的使用(上)

Linux从0到1——Linux环境基础开发工具的使用(上) 1. Linux软件包管理器yum1.1 yum介绍1.2 用yum来下载软件1.3 更新yum源 2. Linux编辑器:vi/vim2.1 vim的基本概念2.2 vim的基本操作2.3 vim正常模式命令集2.4 vim底行模式命令集2.5 视图模式…

Java初阶数据结构队列的实现

1.队列的概念 1.队列就是相当于排队打饭 2.在排队的时候就有一个队头一个队尾。 3.从队尾进对头出 4.所以他的特点就是先进先出 所以我们可以用链表来实现 单链表实现要队尾进队头出{要有last 尾插头删} 双向链表实现效率高:不管从哪个地方当作队列都是可以的&…

OpenMP 编程模型

OpenMP 内存模型 共享内存模型: OpenMP 专为多处理器/核心、共享内存机器设计,底层架构可以是共享内存UMA或NUM OpenMP 执行模型 基于线程的并行: OpenMP 程序基于多线程来实现并行, 线程是操作系统可以调度的最小执行单元。 …

Database Connection Pool 数据库连接池-01-概览及简单手写实现

拓展阅读 第一节 从零开始手写 mybatis(一)MVP 版本。 第二节 从零开始手写 mybatis(二)mybatis interceptor 插件机制详解 第三节 从零开始手写 mybatis(三)jdbc pool 从零实现数据库连接池 第四节 从…

react 综合题-旧版

一、组件基础 1. React 事件机制 javascript 复制代码<div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&a…

print(response, flush=True),这里面的flush是什么意思

print(response, flushTrue),这里面的flush是什么意思 在Python中&#xff0c;flushTrue 参数用于强制立即刷新输出缓冲区。当你打印&#xff08;使用 print 函数&#xff09;内容到控制台时&#xff0c;Python 通常会将输出缓存起来&#xff0c;并在缓冲区满或者遇到换行符时…

淘宝怎么把好评改为差评

在淘宝购物时&#xff0c;我们有时会因为某些原因想要将原来的好评改为差评。本文将为您介绍如何将淘宝的好评改为差评。 一、登录淘宝账号 首先&#xff0c;您需要使用淘宝账号登录到淘宝平台。确保您已经登录到自己的账号。 二、找到订单并进入评价管理页面 1. 进入“我的…

Facebook:连接世界的社交巨人

在当今数字化时代&#xff0c;Facebook作为全球最大的社交媒体平台之一&#xff0c;扮演着连接世界的重要角色。它不仅仅是一个社交网站&#xff0c;更是一个数字化的社交生态系统&#xff0c;影响着全球数十亿用户的生活和交流方式。本文将深入探讨Facebook的起源、用户规模和…

FreeRTOS操作系统学习——资源管理

资源管理 在实际的项目中&#xff0c;我们总是会遇到一些临界资源的访问&#xff0c;虽然可以用互斥量实现对资源的互斥访问&#xff0c;但是如果要实现安全的独占式单线程地访问临界资源&#xff0c;可以通过屏蔽/使能中断、暂停/恢复调度器等方法实现。 屏蔽中断 屏蔽中断…

uniapp——第1篇:基于vue语法的、比原生开发屌的小程序开发

前提&#xff0c;建议先学会前端几大基础&#xff1a;HTML、CSS、JS、Ajax&#xff0c;还有一定要会Vue!&#xff08;Vue2\Vue3&#xff09;都要会&#xff01;&#xff01;&#xff01;不然不好懂 博主作为大二前端小白&#xff0c;刚刚接触前端微信小程序开发时选择的是基于“…

electron + vtkjs加载模型异常,界面显示类似于图片加载失败的图标

electron vtkjs加载模型显示异常&#xff0c;类似于图片加载失败的效果&#xff0c;如上图。 electron开发版本&#xff1a;13。 解决方法&#xff1a;升级electron版本号。 注意&#xff1a;win7最高兼容electron 22版本。

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测

多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现VMD-CNN-GRU变分模态分解结合卷积神经网络门控循环单元多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现VMD-CN…

c++指针的定义和使用

1、定义一个指针 int a10; //定义指针的语法&#xff1a;数据类型 * 指针变量名&#xff1a;int * p&#xff1b; //让指针记录变量a的地址&#xff1a;p &a; int a 10;int* p; p &a; cout << "a的地址为&#xff1a;" << &a <<…

Spring IOC和AOP

IOC&#xff08;Inverse of Control 控制反转&#xff09; 是一种设计思想&#xff0c;而不是一个技术实现。描述的是&#xff1a;Java开发领域对象的创建及管理问题。 如&#xff1a;现有类A依赖于B 传统开发方式&#xff1a;在类A中手动通过new关键字来new一个B对象出来使…

第二十二节 Java 流(Stream)、文件(File)和IO

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式&#xff0c;比如&#xff1a;基本类型、对象、本地化字符集等等。 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据&#xff0c;输出流…

基于ElasticSearch的海量AIS数据存储方法

文章目录 引言I 基于ElasticSearch的海量AIS数据存储方法1.1 关键点1.2 在Elasticsearch(ES)中存储船舶轨迹数据1.3 数据迁移工具:CanalII AIS信息项引言 船舶数据服务器,用来存储从来自全球各地AIS接收到的船舶实时动态数据。服务器自动将二进制的AIS数据流,通过标准的A…

社区居民医疗健康系统 微信小程序

设计原则 本社区健康医疗APP采用 Hbuildex技术&#xff0c;使用Java语言开发&#xff0c;充分保证了系统稳定性、完整性。 社区健康医疗APP的设计与实现的设计思想如下&#xff1a; &#xff08;1&#xff09;操作简单方便、系统界面安全良好、简单明了的页面布局、方便查询相…