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 }

 

posted @ 2020-11-21 19:19  丁帅帅dss  阅读(272)  评论(0)    收藏  举报