Java-Clone改写
2012-10-25 16:47
295 查看
public class CloneDemo {
public static void main(String[] args) {
Shirt t = new Shirt();
Person p1 = new Person("vicky","fan");
Person p2 = (Person)p1.clone();
System.out.println(p1);
p1.shirt.color = 44;
System.out.println(p1);
System.out.println(p2);
}
}
class Person implements Cloneable{
String firstName;
String lastName;
Shirt shirt;
Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.shirt = new Shirt();
}
Person(String firstName, String lastName,Shirt shirt) {
this.firstName = firstName;
this.lastName = lastName;
this.shirt = shirt;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return ("[first name: " + firstName + "," + "last name: " + lastName + " Shirt: " + shirt + "]");
}
public Object clone(){
Person o = null;
try {
o = (Person)super.clone();
if(o.shirt != null) {
o.shirt =(Shirt)shirt.clone();
}
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
class Shirt implements Cloneable{
int color;
public Shirt() {
color = 33;
}
public String toString() {
return String.valueOf(color);
}
public Object clone(){
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
===================================================
[first name: vicky,last name: fan Shirt: 33]
[first name: vicky,last name: fan Shirt: 44]
[first name: vicky,last name: fan Shirt: 33]
public static void main(String[] args) {
Shirt t = new Shirt();
Person p1 = new Person("vicky","fan");
Person p2 = (Person)p1.clone();
System.out.println(p1);
p1.shirt.color = 44;
System.out.println(p1);
System.out.println(p2);
}
}
class Person implements Cloneable{
String firstName;
String lastName;
Shirt shirt;
Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.shirt = new Shirt();
}
Person(String firstName, String lastName,Shirt shirt) {
this.firstName = firstName;
this.lastName = lastName;
this.shirt = shirt;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return ("[first name: " + firstName + "," + "last name: " + lastName + " Shirt: " + shirt + "]");
}
public Object clone(){
Person o = null;
try {
o = (Person)super.clone();
if(o.shirt != null) {
o.shirt =(Shirt)shirt.clone();
}
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
class Shirt implements Cloneable{
int color;
public Shirt() {
color = 33;
}
public String toString() {
return String.valueOf(color);
}
public Object clone(){
Object o = null;
try {
o = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
===================================================
[first name: vicky,last name: fan Shirt: 33]
[first name: vicky,last name: fan Shirt: 44]
[first name: vicky,last name: fan Shirt: 33]
相关文章推荐
- Java性能优化(10):谨慎改写clone
- EffectiveJava之10-谨慎改写clone
- java的clone
- Java Cloneable和Serializeable
- Java中的克隆(CLONE)
- java中的clone
- Java 基础数据类型 和 深度克隆对象的2种方法(实现Cloneable接口或者实现对象序列化)
- JAVA 对象克隆clone
- java clone方法使用详解
- java-Object的clone()方法
- java 深clone和浅clone
- 【项目分析】利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码
- JAVA/JSP学习系列之八(改写MySQL翻页例子)
- java clone()
- Java中的clone()方法
- java clone详解
- 顿悟JAVA,自己实现Object的Clone的约束关系(上)
- java实现深复制:clone()及序列化
- Java键盘事件监听(2)修改:使用监听键盘事件,而不是改写JTextField
- java 继承时方法的改写