通用超类-Java考试重点笔记 计算机二级考试

发布于 2018-02-01 11:30  编辑:盘子
0
计算机等级考试题库 扫码微信刷题

通用超类

正像你在这部分开始的概述中所看到的,从类。句object继承过来的protected方法clone()将建立一个新的对象,该对象为当前对象的副本。只有在被复制的对象类指示复制是可被接收的时候,才进行复制操作。若类实现了Cloneable接口,就能够接收复制。现在不要担心接口是什么,稍后我们将介绍它。


从object继承过来的clone()方法,通过建立一个与当前对象同类型的新对象,并且把新对象中每个字段的值设置成与当前对象对应的字段值相同的方式来复制对象。当原始对象的数据成员引用类对象时,被引用的对象在创建副本时不重复复制,只是把引用从旧对象的字段中拷贝到复制的对象中。现在,旧对象和新对象都可以通过它们对应的数据成员修改同一个共享的对象,而我们却不能预料所发生的结果,这通常并不是你所希望的。


如果对象是可被复制的,那么这个类必须实现Cloneable接口。我们将在本章稍后讨论有关接口的内容,那时你会看到通常实现的接口涉及到实现一套特定的方法。要让一个类实施这个接口,你所需要做的全部工作是在类定义的第一行用implements关键字对它进行声明,例如:

class Dog implements cloneable

(

//Detoile of the definition of the class

}

由于我们声明了类的实现接口,所以Dog对象可复制。

若我们例举一个简单的特定实例,会更清楚地了解所继承的clone()方法的含义。让我们假设定义了一个类Flea,它有一个可用来更改名字的方法:

public class Flea extendsAnimal implements Cloneable

{

//Constructor

public Flea(string aName,string,aSpecies)

{

super("Flea") //Pass the type to the base

name=aName //Supplied name

species=aSpecies; //Supplied species

}

//Change the flea's name

public void setName(string aName)

(

name=aName; //Change to the new name

}

//Return the flea's name

public string getName()

(

return name

)

//Return the species

public strund getspecies()

{

return species

}

public void sound()

{

system.out.println(post)

}

//Pressent a fles's details as a string

public String tostring ()

{

return super.tostring( )+ \nIt's+name+the +species;

}

//Override inherited clone( ) to make it public

public object clone () throws CloneNotsupportedException

{

return super clonnnne();

}

private string name //Name of fleal

private string species; //Flea species

}






考无忧小编推荐:

更多计算机等级考试真题及答案>>>点击查看

想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>点击查看


本文网址:http://www.k51.com.cn/info/jsjdjks/1802/0126226.html
选择分享到: