點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程第六章匯總
6.7 通用超類
正像你在這部分開始的概述中所看到的,從類。句object繼承過(guò)來(lái)的protected方法clone()將建立一個(gè)新的對(duì)象,該對(duì)象為當(dāng)前對(duì)象的副本。只有在被復(fù)制的對(duì)象類指示復(fù)制是可被接收的時(shí)候,才進(jìn)行復(fù)制操作。若類實(shí)現(xiàn)了Cloneable接口,就能夠接收復(fù)制。現(xiàn)在不要擔(dān)心接口是什么,稍后我們將介紹它。
從object繼承過(guò)來(lái)的clone()方法,通過(guò)建立一個(gè)與當(dāng)前對(duì)象同類型的新對(duì)象,并且把新對(duì)象中每個(gè)字段的值設(shè)置成與當(dāng)前對(duì)象對(duì)應(yīng)的字段值相同的方式來(lái)復(fù)制對(duì)象。當(dāng)原始對(duì)象的數(shù)據(jù)成員引用類對(duì)象時(shí),被引用的對(duì)象在創(chuàng)建副本時(shí)不重復(fù)復(fù)制,只是把引用從舊對(duì)象的字段中拷貝到復(fù)制的對(duì)象中。現(xiàn)在,舊對(duì)象和新對(duì)象都可以通過(guò)它們對(duì)應(yīng)的數(shù)據(jù)成員修改同一個(gè)共享的對(duì)象,而我們卻不能預(yù)料所發(fā)生的結(jié)果,這通常并不是你所希望的。
如果對(duì)象是可被復(fù)制的,那么這個(gè)類必須實(shí)現(xiàn)Cloneable接口。我們將在本章稍后討論有關(guān)接口的內(nèi)容,那時(shí)你會(huì)看到通常實(shí)現(xiàn)的接口涉及到實(shí)現(xiàn)一套特定的方法。要讓一個(gè)類實(shí)施這個(gè)接口,你所需要做的全部工作是在類定義的第一行用implements關(guān)鍵字對(duì)它進(jìn)行聲明,例如:
class Dog implements cloneable
(
//Detoile of the definition of the class
}
由于我們聲明了類的實(shí)現(xiàn)接口,所以Dog對(duì)象可復(fù)制。
若我們例舉一個(gè)簡(jiǎn)單的特定實(shí)例,會(huì)更清楚地了解所繼承的clone()方法的含義。讓我們假設(shè)定義了一個(gè)類Flea,它有一個(gè)可用來(lái)更改名字的方法:
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
}
相關(guān)推薦:
2015計(jì)算機(jī)等級(jí)考試二級(jí)Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |