1. 1 package 类的组合;
  2. 2
  3. 3 public class Clock {
  4. 4 private int hour,minute,second;//字段: 保存分秒数据
  5. 5 public void set(int h,int m,int s)//方法:设置钟表对象的时间
  6. 6 {
  7. 7 hour=h;
  8. 8 minute=m;
  9. 9 second=s;
  10. 10 }
  11. 11 public void show() //方法:显示时间,显示格式时:分:秒
  12. 12 {
  13. 13 System.out.println(hour+":"+minute+":"+second);
  14. 14 }
  15. 15 public Clock() //无参构造方法:将时分秒数据都设为0
  16. 16 {
  17. 17 hour=0;minute=0;second=0;
  18. 18 }
  19. 19 public Clock(int h,int m,int s) //有参构造方法:根据参数设置时间
  20. 20 {
  21. 21 hour=h;
  22. 22 minute=m;
  23. 23 second=s;
  24. 24
  25. 25 }
  26. 26 public Clock(Clock oldObj)//拷贝构造方法:复制已有对象的时分秒数据
  27. 27 {
  28. 28 hour=oldObj.hour;
  29. 29 minute=oldObj.minute;
  30. 30 second=oldObj.second;
  31. 31 }
  32. 32 public static void main(String[] args) {
  33. 33 // TODO Auto-generated method stub
  34. 34 Clock obj1=new Clock();
  35. 35 Clock obj2=new Clock(9,30,15);
  36. 36 Clock obj3=new Clock(obj2);
  37. 37 obj1.set(8, 30, 15);
  38. 38 obj1.show();
  39. 39 obj2.show();
  40. 40 obj3.show();
  41. 41 }
  42. 42
  43. 43 }
  44. 44
  45. 45
  46. 46 package 类的组合;
  47. 47
  48. 48 public class DualClock {//双时区钟表:含有对象字段,属于组合类
  49. 49 public Clock c1,c2; //对象字段:两个Clock类的钟表对象,设为公有成员
  50. 50 public void setDual(int h,int m,int s) //设置方法:按参数设置c1,c2的时间
  51. 51 {
  52. 52 c1.set(h, m, s);c2.set(h+1, m, s); //假设设为两个连续的时区
  53. 53 }
  54. 54 public DualClock()//组合类需要定义自己的构造方法
  55. 55 {
  56. 56 c1=new Clock();//组合类需要使用运算符new创建对象字段
  57. 57 c2=new Clock();
  58. 58 }
  59. 59 public static void main(String[] args) {
  60. 60 // TODO Auto-generated method stub
  61. 61 DualClock obj=new DualClock();
  62. 62 obj.c1.set(10, 15, 30);
  63. 63 obj.c1.show();
  64. 64 }
  65. 65
  66. 66 }
  67. 67
  68. 68 package 类的组合;
  69. 69
  70. 70 public class DateClock {//包装类
  71. 71 private Clock c;//对象字段:被包装的原始钟表(clock)对象c
  72. 72 //以下代码都是为了对钟表对象c进行包装,为其增加日历功能
  73. 73 private int year,month,day;//增加字段:保存年月日数据
  74. 74 public void setDate(int y,int m,int d)
  75. 75 {
  76. 76 //方法:设置日期
  77. 77 year=y;
  78. 78 month=m;
  79. 79 day=d;
  80. 80 }
  81. 81 public void show()
  82. 82 {
  83. 83 //方法:显示日期时间
  84. 84 System.out.println(year+"-"+month+"-"+day);//先显示日期
  85. 85 c.show();//再显示时间
  86. 86 }
  87. 87 public Clock getClock() //方法:获得包装前的原始钟表对象c
  88. 88 {
  89. 89 return c;
  90. 90 }
  91. 91 public DateClock(Clock obj) //构造方法:传递被包装的钟表对象
  92. 92 {
  93. 93 c=obj; //对象字段c直接引用传递过来的钟表对象obj
  94. 94 }
  95. 95 }
  96. 96
  97. 97 package 类的组合;
  98. 98
  99. 99 public class DateClockTest {//主类
  100. 100
  101. 101 public static void main(String[] args) {
  102. 102 Clock cObj=new Clock(10,30,15);//定义一个钟表对象cobj
  103. 103 //对钟表对象cobj进行包装,得到一个带日历的钟表dcobj
  104. 104 DateClock dcObj=new DateClock(cObj);
  105. 105 dcObj.setDate(2020, 10, 25);//设置dcobj的日期
  106. 106 dcObj.show();//显示dcobj的日期和时间
  107. 107 }
  108. 108
  109. 109 }

Java类的组合的更多相关文章

  1. Java编程的逻辑 (14) - 类的组合

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  2. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

  3. Java继承与组合

    Java继承与组合 继承 java 中使用extends关键字表示继承关系,当创建一个类时,如果没有明确指出要继承的类,则是隐式地从根类Object进行继承. 子类继承父类的成员变量 子类能够继承父类 ...

  4. 解析Java类和对象的初始化过程

    类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来 ...

  5. Java类路径

    Java 类路径告诉 java 解释器和 javac 编译器去哪里找它们要执行或导入的类. 类(您可能注意到的那些 *.class 文件)可以存储在目录或 jar 文件中,或者存储在两者的组合中, 但 ...

  6. java类与对象的动手动脑和其他小问题

    在Java中,我们可以通过组合一私有字段和一对get/set方法来定义一个属性.私有的变量,共有的方法. package sample; /** * 自定义Java类的示例 */ class MyCl ...

  7. c++基础语法 构造函数 析构函数 类的组合

    1 构造函数 1.不能指定任何返回值,甚至连void都不能有. 2.与Java不同,c++不同new对象,对于无参的构造函数声明对象时括号应该省略. 2 析构函数 1. 前加~,不能有参数,不能有返回 ...

  8. java类和对象的基础(笔记)

    在Java类的设计中,有时希望一个类在任何时候只能有一个实例.这时可以将该类设计为单例模式(singleton).要将一个类设计为单例模式,需要把类的构造方法的访问修饰符声明为private,然后在类 ...

  9. Java类之间的关联关系(转载)

    Java类之间的关联关系 UML类图中的关系分为四种:泛化.依赖.关联.实现:关联关系又可以细化为聚合和组合. 一.泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有 ...

随机推荐

  1. AT3557 Four Coloring

    题目链接 题解 先把每个格子看做一个点 (所谓的切比雪夫距离的转化) ,然后把这些点组成的矩形旋转45度,再把他塞到一个每个格子大小为\(d*d\)的网格图中,那么在一个格子上的点颜色相同 代码 #i ...

  2. [Luogu P2261] [CQOI2007]余数求和 (取模计算)

    题面 传送门:https://www.luogu.org/problemnew/show/P2261 Solution 这题显然有一个O(n)的直接计算法,60分到手. 接下来我们就可以拿出草稿纸推一 ...

  3. 团灭 LeetCode 股票买卖问题

    很多读者抱怨 LeetCode 的股票系列问题奇技淫巧太多,如果面试真的遇到这类问题,基本不会想到那些巧妙的办法,怎么办?所以本文拒绝奇技淫巧,而是稳扎稳打,只用一种通用方法解决所用问题,以不变应万变 ...

  4. CF1295E Permutation Separation

    线段树 难得把E想出来,写出来,但却没有调出来(再给我5分钟),我的紫名啊,我一场上紫的大好机会啊 首先考虑是否能将$k$在$1$--$n-1$的每一个的最小代价都求出来 因为$k$从$i$到$i-1 ...

  5. Elasticsearch原理解析与性能调优

    基本概念 定义 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据 用途 全文检索 结构化搜索 分 ...

  6. Pandas_VBA_数据清洗对比

    VBA处理数据与Python Pandas处理数据案例比较 Author : Collin_PXY 需求: 现有一个 csv文件,包含'CNUM'和'COMPANY'两列,数据里包含空行,且有内容重复 ...

  7. Shell脚本常用命令整理

    该笔记主要整理了一些常见的脚本操作命令,大致如下(持续补充中): 1. while.for循环 1. while.for循环 #!/bin/bash # while循环 v_start_date=${ ...

  8. RPC协议实践入门

    RPC 是什么 RPC(Remote Procedure Call) 是一个计算机通信协议.该协议允许运行与一台计算机的程序调用另一个地址空间的程序,是一个通过发送请求-接受回应进行信息交互的系统. ...

  9. 有名管道FIFO进程间数据传输实例

    紧接着上面一个博客的简单介绍,下面进行一个没有血缘关系的进程间通信的实例,实现文件拷贝传输. 有两个进程,一个主要是fifow进程:读文件Makefile内容,写入管道;另一个进程fifor:读管道内 ...

  10. Linear basis

    Linear basis is a relatively easy to learn but may not be useful algorithm. Below are two blogs that ...