前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java复制构造函数

Java复制构造函数

作者头像
用户7886150
修改2020-12-15 10:37:59
9550
修改2020-12-15 10:37:59
举报
文章被收录于专栏:bit哲学院

参考链接: Java中的构造方法重载

//Example:  

//1.Clock类:  

public class Clock {  

 private int hour;  

 private int minute;  

 private int second;  

 public Clock(){  

  setTime(0,0,0);  

 }  

 public Clock(int h,int m,int s){  

  setTime(h,m,s);  

 }  

 /* 拷贝构造函数 */  

 public Clock(Clock clock){   ///对象做参数

  this.hour=clock.hour;  

  this.minute=clock.minute;  

  this.second=clock.second;  

 }  

 public int getHour() {  

  return hour;  

 }  

 public int getMinute() {  

  return minute;  

 }  

 public int getSecond() {  

  return second;  

 }  

 public void setTime(int h,int m,int s){  

  if(h>=0 && h<24)  

   this.hour=h;  

  else  

   this.hour=0;  

  if(m>=0 && m<60)  

   this.minute=m;  

  else  

   this.minute=0;  

  if(s>=0 && s<60)  

   this.second=s;  

  else  

   this.second=0;  

 }  

 public void printTime(){  

  if(this.hour<10)  

   System.out.print("0");  

  System.out.print(this.hour+":");  

  if(this.minute<10)  

   System.out.print("0");  

  System.out.print(this.minute+":");  

  if(this.second<10)  

   System.out.print("0");  

  System.out.println(this.second);  

 }  

}  

//2.main函数:  

public class Program {  

 public static void main(String[] args) {  

  Clock c1=new Clock(6,43,23);  

  Clock c2=new Clock(c1);//调用拷贝构造函数  

  c1.printTime();  

  c2.printTime();  

 }  

}  

//3.运行结果:  

06:43:23  

06:43:23   

----------------------------------------------------------------------------------  

构造函数只能进行浅copy,就是只能复制简单类型如int,float数据到另一副本。 

如果对象中包含了对象等复杂类型,浅拷贝对象其实是对象的引用,而不是重新生成一个新副本。这时,如果对一个实例的内部类类型修改,其他实例的内部类类型也会被修改。这时就需要copy构造函数来进行深复制(也就是使对象中包含的类等复杂类型使用值赋值,而不是引用赋值) 

---------------------------------------------------------------------------------- 

 构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型的方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。 

 拷贝构造方法就是用一个已经实例化的对象来new另一个对象 

 给个例子:  

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      public 

      class 

      Test {

      private 

      int 

      hour;

      private 

      int 

      minute;

      private 

      int 

      second;

      // 构造方法

      public 

      Test() {

      }

      // 拷贝构造方法

      public 

      Test(Test t) {

      super

      ();

      this

      .hour = t.hour;

      this

      .minute = t.minute;

      this

      .second = t.second;

      }

      }

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档