Java类的组合
1 package 类的组合;
2
3 public class Clock {
4 private int hour,minute,second;//字段: 保存分秒数据
5 public void set(int h,int m,int s)//方法:设置钟表对象的时间
6 {
7 hour=h;
8 minute=m;
9 second=s;
10 }
11 public void show() //方法:显示时间,显示格式时:分:秒
12 {
13 System.out.println(hour+":"+minute+":"+second);
14 }
15 public Clock() //无参构造方法:将时分秒数据都设为0
16 {
17 hour=0;minute=0;second=0;
18 }
19 public Clock(int h,int m,int s) //有参构造方法:根据参数设置时间
20 {
21 hour=h;
22 minute=m;
23 second=s;
24
25 }
26 public Clock(Clock oldObj)//拷贝构造方法:复制已有对象的时分秒数据
27 {
28 hour=oldObj.hour;
29 minute=oldObj.minute;
30 second=oldObj.second;
31 }
32 public static void main(String[] args) {
33 // TODO Auto-generated method stub
34 Clock obj1=new Clock();
35 Clock obj2=new Clock(9,30,15);
36 Clock obj3=new Clock(obj2);
37 obj1.set(8, 30, 15);
38 obj1.show();
39 obj2.show();
40 obj3.show();
41 }
42
43 }
44
45
46 package 类的组合;
47
48 public class DualClock {//双时区钟表:含有对象字段,属于组合类
49 public Clock c1,c2; //对象字段:两个Clock类的钟表对象,设为公有成员
50 public void setDual(int h,int m,int s) //设置方法:按参数设置c1,c2的时间
51 {
52 c1.set(h, m, s);c2.set(h+1, m, s); //假设设为两个连续的时区
53 }
54 public DualClock()//组合类需要定义自己的构造方法
55 {
56 c1=new Clock();//组合类需要使用运算符new创建对象字段
57 c2=new Clock();
58 }
59 public static void main(String[] args) {
60 // TODO Auto-generated method stub
61 DualClock obj=new DualClock();
62 obj.c1.set(10, 15, 30);
63 obj.c1.show();
64 }
65
66 }
67
68 package 类的组合;
69
70 public class DateClock {//包装类
71 private Clock c;//对象字段:被包装的原始钟表(clock)对象c
72 //以下代码都是为了对钟表对象c进行包装,为其增加日历功能
73 private int year,month,day;//增加字段:保存年月日数据
74 public void setDate(int y,int m,int d)
75 {
76 //方法:设置日期
77 year=y;
78 month=m;
79 day=d;
80 }
81 public void show()
82 {
83 //方法:显示日期时间
84 System.out.println(year+"-"+month+"-"+day);//先显示日期
85 c.show();//再显示时间
86 }
87 public Clock getClock() //方法:获得包装前的原始钟表对象c
88 {
89 return c;
90 }
91 public DateClock(Clock obj) //构造方法:传递被包装的钟表对象
92 {
93 c=obj; //对象字段c直接引用传递过来的钟表对象obj
94 }
95 }
96
97 package 类的组合;
98
99 public class DateClockTest {//主类
100
101 public static void main(String[] args) {
102 Clock cObj=new Clock(10,30,15);//定义一个钟表对象cobj
103 //对钟表对象cobj进行包装,得到一个带日历的钟表dcobj
104 DateClock dcObj=new DateClock(cObj);
105 dcObj.setDate(2020, 10, 25);//设置dcobj的日期
106 dcObj.show();//显示dcobj的日期和时间
107 }
108
109 }
Java类的组合的更多相关文章
- Java编程的逻辑 (14) - 类的组合
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- jvm系列(一):java类的加载机制
java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...
- Java继承与组合
Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...
- 解析Java类和对象的初始化过程
类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...
- Java类路径
Java 类路径告诉 java 解释器和 javac 编译器去哪里找它们要执行或导入的类. 类(您可能注意到的那些 *.class 文件)可以存储在目录或 jar 文件中,或者存储在两者的组合中, 但 ...
- java类与对象的动手动脑和其他小问题
在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...
- c++基础语法 构造函数 析构函数 类的组合
1 构造函数 1.不能指定任何返回值,甚至连void都不能有. 2.与Java不同,c++不同new对象,对于无参的构造函数声明对象时括号应该省略. 2 析构函数 1. 前加~,不能有参数,不能有返回 ...
- java类和对象的基础(笔记)
在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...
- Java类之间的关联关系(转载)
Java类之间的关联关系 UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 一.泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有 ...
随机推荐
- 物流一站式单号查询之快递鸟API接口(附Demo源码)
连载篇提前看 物流一站式单号查询之快递鸟API接口 物流一站式查询之TrackingMore篇 物流一站式查询之顺丰接口篇 物流一站式查询之快递100 前情提要 前三篇中,我们已经从注册.申请接口.调 ...
- 处理textarea里Enter(回车换行符)
Enter换行符 如果包含有回车换行符,在字符串中表现为"\n": 会返回一条字符串: 原文章:https://blog.csdn.net/shenlf_bk/article/de ...
- yum安装出现被锁定的报错
问题:在使用#yum install XXX 命令的时候,出现yum.pid 已被锁定的提示,无法进行yum 安装 解决: 使用# rm -f /var/run/yum.pid 命令删除该进程即可
- R-C3D:用于时间活动检测的区域3D网络
论文原称:R-C3D: Region Convolutional 3D Network for Temporal Activity Detection(2017) 主要贡献: 1.提出一个包括活动候选 ...
- C++ 基础 2:C++ 对 C 语言的拓展
1 引用 1.1 定义及编程实践 引用,是某个已存在变量的另一个名字. 一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 注意: 引用没有定义,是一种关系型声明.声明它和原有某一 ...
- JS仿贪吃蛇:一串跟着鼠标的Div
贪吃蛇是一款80后.90后比较熟悉的经典游戏,下面通过简单的JS代码来实现低仿版贪吃蛇效果:随着鼠标的移动,在页面中呈现所有Div块跟随鼠标依次移动,效果如下图所示. <!DOCTYPE htm ...
- tcp输入数据 慢速路径处理 && oob数据 接收 && 数据接收 tcp_data_queue
大致的处理过程 TCP的接收流程:在tcp_v4_do_rcv中的相关处理(网卡收到报文触发)中,会首先通过tcp_check_urg设置tcp_sock的urg_data为TCP_URG_NOTYE ...
- Golang调度器GMP原理与调度全分析(转 侵 删)
该文章主要详细具体的介绍Goroutine调度器过程及原理,包括如下几个章节. 第一章 Golang调度器的由来 第二章 Goroutine调度器的GMP模型及设计思想 第三章 Goroutine调度 ...
- kafka消费者offset存储策略
由于 consumer 在消费过程中可能会出现断电宕机等故障,consumer 恢复后,需要从故 障前的位置的继续消费,所以 consumer 需要实时记录自己消费到了哪个 offset,以便故障恢 ...
- nginx 负载均衡设置
upstream lucky5{ server 127.0.0.1:3000 weight=10; server 127.0.0.1:3001 weight=5; } server{ location ...