Java中对象的复制
来源:互联网 发布:力港网络客服电话 编辑:程序博客网 时间:2024/05/31 19:36
Java中对象的复制
1、 Java中对象与变量
先新建一个对象
Dog dog=new Dog("Rover","Poodle");
其中,dog为Dog类型的变量,Dog("Rover", "Poodle")为Dog类型的对象,dog变量获得是Dog("Rover","Poodle")对象的引用。
如果再写:
Dog myDog=dog;
表示myDog与dog引用同一对象Dog("Rover", "Poodle"),修改myDog会引起dog的同步修改
myDog.setName=”Smart”;
则造成对象Dog("Rover", "Poodle")的消失(如果程序的任意一个地方都不在有对该对象的引用的话),Dog("Smart", "Poodle")会新建,这个时候myDog和dog引用了新的Dog("Smart","Poodle")对象,如下图
2、 简单的对象复制
任何类都是超类Object的子类,Object提供了Protected类型的clone()函数用于对象的复制。然而,使用clone()复制对象会变的复制而麻烦。更建议使用的方式是实现一个复制功能的构造函数。下面的例子:
public class Dog {
public Dog(String aName,String abreed) {
// TODO Auto-generatedconstructor stub
name=aName;
breed=abreed;
}
public Dog(Dog dog) {
// TODO Auto-generatedconstructor stub
name=dog.name;
breed=dog.breed;
}
protected Stringname;
protected Stringbreed;
}
主程序编写:
Dog dog=new Dog("Rover","Poodle");
Dog myDog=newDog(dog);
就实现了myDog所引用的对象地址与dog所引用的对象地址的彼此独立,修改myDog所引用的对象不会引起dog所引用的对象,一句话,myDog和dog彼此独立。
3、 复杂的对象复制
问题抽象为:
PetDog类对象继承自Dog……(仍有父类的话),
Flea类继承自FlySpecises……(仍有父类的话)
PetDog类包含Flea类的一个对象,对PetDog类进行复制的条件:Flea类及Flea的所有超类都可以复制
这是因为,对PetDog类进行复制的话必须保证对PetDog类中的Flea类对象可以被复制。
关键点如下:
Dog类的的构造函数:
public Dog(Dog dog) {
// TODO Auto-generatedconstructor stub
super(dog);
name=dog.name;
breed=dog.breed;
}
FlySpecises的构造函数:
public FlySpecises (FlySpecises flySpecises) {
// TODO Auto-generatedconstructor stub
super(flySpecises);
name= flySpecises.name;
species= flySpecises.species;
}
Flea类的构造函数:
public Flea(Flea flea) {
// TODO Auto-generatedconstructor stub
super(flea);
name=flea.name;
species=flea.species;
}
则PetDog可以为:
public class PetDog extends Dog {
public PetDog(String aName, String abreed,StringfleaName,String feasSpecies) {
super(aName, abreed);
// TODO Auto-generatedconstructor stub
petFlea=new Flea(fleaName, feasSpecies);
}
//对象复制的关键构造函数
public PetDog(PetDog petDog) {
super(petDog);
// TODO Auto-generatedconstructor stub
petFlea=new Flea(petDog.petFlea);
}
protected FleapetFlea;
}
- Java中对象的复制
- java中对象的复制
- java中对象的复制
- java 中 对象的复制
- Java中对象的复制/拷贝
- 关于Java中对象的复制
- java 中对象之间的复制
- 关于 Java 中对象的复制
- java对象的复制
- java对象的复制
- JAVA的对象复制
- java对象的复制
- java对象的复制
- java对象的复制
- Java中复制两个不同类的对象的属性
- java Map 复制和对象的复制
- java中对象的复制与相等判断
- 【Java】Java中对象的深复制(深克隆)和浅复制(浅克隆)
- 远程注入DLL(简单描述)
- gevent学习2- 并行ping
- Unicode与UCS的历史恩怨
- log device is empty!
- ui更新数据库 记录
- Java中对象的复制
- 递归与分治策略
- Smart Client Software Factory "Add View (with presenter)" 等菜单不出来
- cgroup--blkio子系统测试-2(配合fio 做weight测试)
- cygwin下git图形界面gitk和git gui安装
- 【容器转换成为指定数组】
- GB2312,GBK与中文网页
- 百层楼扔棋子问题
- C/C++之SQLite常用函数