国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

轉(zhuǎn)-類的深入研究

2019-11-17 06:00:03
字體:
供稿:網(wǎng)友

1 在java中使用繼續(xù)

面向?qū)ο蟮某绦蛟O(shè)計(jì)中最為強(qiáng)大的功能是類的繼續(xù),類的繼續(xù)答應(yīng)你在一個已經(jīng)存在的類之上編寫新的程序,例如,你想建立一個可在屏幕上顯示并能填充它的矩形類,你可以從頭開始或者利用舊的矩形類,下面的部分將向你介紹如何繼續(xù)已存在的Rectangle類,而不需重寫其中的代碼。

比如建立一個fillRect類,該類可以使用Rectangle類中所有已定義的數(shù)據(jù)和成員函數(shù),如:width、height等數(shù)據(jù)和getArea等成員函數(shù),就可是使用繼續(xù)的方法來實(shí)現(xiàn)。使用extands要害字讓Java程序員能夠繼續(xù)已有類的成員函數(shù),為了繼續(xù)Rectangle類,你必須引用舊的Rectangle類,你必須引用舊的Rectangle類,并且在新類的說明中引用它,比如:

import Shapes.Rectangle;

class fillRect extands Rectangle

{.....

}

2 成員函數(shù)的重載

繼續(xù)之后,如何使fillRect類比Rectangle類有所提高呢?我們可以用如下代碼來實(shí)現(xiàn)一個新的drawRect成員函數(shù),它將大大縮短代碼,并能填充矩形,而不是僅僅畫出矩形的輪廓:

PRivate String makeString(chr ch,int num)

{ StringBuffer str=new StringBuffer();

for(int i=num;i>0;i--)

str.append(ch);

return str.toString();

}

public void drawRect()

{

for(int i=height;i>0;i--)

System.out.println(makeString("#",width));

}

注重這里我們使用了StringBuffer類。之所以使用StringBuffer是因?yàn)镾tring只能產(chǎn)生一個靜態(tài)類型--它的大小是不能改變的,而StringBuffer能夠產(chǎn)生一個可變長度的字符串類型。

在這里,drawRect成員函數(shù)被重載了,通過使用相同的成員函數(shù)名字,你可以用新的成員函數(shù)來代替舊的成員函數(shù)。不過,那些被說明為final的成員函數(shù)是不能被重載的。

注重,你不必在新的類中包含那些與被繼續(xù)類相同的代碼,而只需要加入你想要的東西,但你必須建立一個新的構(gòu)造成員函數(shù),以區(qū)分這兩個不同的類。

新類的全貌如下所示,你可以發(fā)現(xiàn)通過繼續(xù)Rectangle類,代碼變得非常簡單明了。

class fillRect extands Rectangle

{ public fillRect(int w,int h)

{

supper(w,h);

private String makeString(char ch,int num)

{

StringBuffer str=new StringBuffer();

for(int i=num;i>0;i--)

str.append(ch);

return str.toString();

}

public void drawRect()

{

for(int i=height;i>0;i--)

System.out.printlm(makeString("#",width));

} } }

3 使用接口

Java可以創(chuàng)建一種稱作接口(interface)的類,在這個類中,所有的成員函數(shù)都是抽象的,也就是說它們都只有說明沒有定義,你可以如下所示來說明一個接口。

public interface interfaceName

//成員函數(shù)說明

接口中成員函數(shù)的缺省引用類型是private,接口(interface)的內(nèi)部變量是不可更改的,并且總是static和final。

通過使用要害字implement,你可以在定義類時繼續(xù)一個接口。不過與extends不同的是,一個類可以同時繼續(xù)多個接口。

使用接口的優(yōu)點(diǎn)在何處呢?通過創(chuàng)建一個接口,你可以說明一整套抽象的成員函數(shù)而無須去具體實(shí)現(xiàn)它,所有繼續(xù)了這個接口的類,都將有著具有相同原形的成員函數(shù)。例如,你想所有的shapes都有一個draw()成員函數(shù),你可以創(chuàng)建一個接口并且用Shape命名:

public interface Shape

void draw();

現(xiàn)在,無論你何時創(chuàng)建一個繼續(xù)自Shape的類,都將擁有一個成員函數(shù)draw()。

4 類的轉(zhuǎn)換

類的轉(zhuǎn)換,與不同類型的變量之間的轉(zhuǎn)換有相似之處,但并不一樣。

我們可以把一個父類的對象轉(zhuǎn)換成一個子類對象,下面的代碼說明一個類轉(zhuǎn)換的例子,其中Y類是從X類繼續(xù)而來的:

Y y=new Y();

X x;

x=y;

需要注重的是兩個子類之間的轉(zhuǎn)換是不可以的。

5 null,this和supper變量

所有的類都有三種變量:null、this和supper。

null變量不指向任何實(shí)際對象,而是指向一個空對象,如下例所示:

Rectangle rect=null;

該例產(chǎn)生一個矩形類的變量,但不創(chuàng)建一個實(shí)際的對象。另外,假如一個成員函數(shù)需要一個對象作為參數(shù)時,你同樣可以用null代替。

this變量指向?qū)ο蟊旧恚粋€類可以通過this變量來獲得一個代表它自身的對象變量。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴楚县| 郑州市| 蓬安县| 涞水县| 微山县| 信丰县| 天长市| 黑龙江省| 卓资县| 偃师市| 大悟县| 博罗县| 班玛县| 社会| 长兴县| 日喀则市| 常山县| 石泉县| 通河县| 安福县| 自治县| 沁阳市| 洛扎县| 高雄县| 客服| 鸡西市| 和田县| 泰和县| 莎车县| 兰西县| 兴业县| 弥勒县| 乌拉特后旗| 宣武区| 元谋县| 泾川县| 祁门县| 巴林右旗| 开鲁县| 宁夏| 汶上县|