Object类

2018-12-28  本文已影响0人  油多坏不了菜

方法

拷贝

如果利用clone()方法拷贝,需要实现cloneable 接口
因为对象中属性可能存在引用类型,所以就有所谓的深拷贝与浅拷贝。

Class Birthday{
  int year;
  int month;
  ...
}
class Person{
  String name;//String类型(特殊)
  int age;//基本数据类型
  Birthday birthday;//引用类型
  ...
}
main(){
  Person p1 = new Person("beauty", 18, new Birthday(2018, 12, 25));
  Person p2 = person.clone();
  p1.birthday == p2.birthday;//true,birthday属性指向同一内存空间,浅拷贝。 
}
//深拷贝需要覆写 clone方法
//Person类的clone()方法覆写
public Object clone(){
      Person p = (Person)super.clone();
      p.setBirthday((Birthday)this.birthday.clone());//属性所属类也需要实现Cloneable接口
      return p;
}
//Birthday的clone()方法覆写
public Object clone(){
  return super.clone();//因为该类中没有引用类型。
}

关键点

上一篇 下一篇

猜你喜欢

热点阅读