溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中類有什么用

發(fā)布時(shí)間:2022-01-05 16:57:54 來(lái)源:億速云 閱讀:223 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹Java中類有什么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

1:在Java中使用繼承
  面向?qū)ο蟮某绦蛟O(shè)計(jì)中最為強(qiáng)大的功能是類的繼承,類的繼承允許你在一個(gè)已經(jīng)存在的類之上編寫(xiě)新的程序,例如,你想建立一個(gè)可在屏幕上顯示并能填充它的矩形類,你可以從頭開(kāi)始或者利用舊的矩形類,下面的部分將向你介紹如何繼承已存在的Rectangle類,而不需重寫(xiě)其中的代碼。
  比如建立一個(gè)fillRect類,該類可以使用Rectangle類中所有已定義的數(shù)據(jù)和成員函數(shù),如:width、height等數(shù)據(jù)和getArea等成員函數(shù),就可是使用繼承的方法來(lái)實(shí)現(xiàn)。使用extands關(guān)鍵字讓Java程序員能夠繼承已有類的成員函數(shù),為了繼承Rectangle類,你必須引用舊的Rectangle類,你必須引用舊的Rectangle類,并且在新類的說(shuō)明中引用它,比如:

import Shapes.Rectangle;

class fillRect extands Rectangle
{
.....

}


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

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)生一個(gè)靜態(tài)類型--它的大小是不能改變的,而StringBuffer能夠產(chǎn)生一個(gè)可變長(zhǎng)度的字符串類型。
  在這里,drawRect成員函數(shù)被重載了,通過(guò)使用相同的成員函數(shù)名字,你可以用新的成員函數(shù)來(lái)代替舊的成員函數(shù)。不過(guò),那些被說(shuō)明為final的成員函數(shù)是不能被重載的。
  注意,你不必在新的類中包含那些與被繼承類相同的代碼,而只需要加入你想要的東西,但你必須建立一個(gè)新的構(gòu)造成員函數(shù),以區(qū)分這兩個(gè)不同的類。
  新類的全貌如下所示,你可以發(fā)現(xiàn)通過(guò)繼承Rectangle類,代碼變得非常簡(jiǎn)單明了。

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)的類,在這個(gè)類中,所有的成員函數(shù)都是抽象的,也就是說(shuō)它們都只有說(shuō)明沒(méi)有定義,你可以如下所示來(lái)說(shuō)明一個(gè)接口。
public interface interfaceName
//成員函數(shù)說(shuō)明

  接口中成員函數(shù)的缺省引用類型是private,接口(interface)的內(nèi)部變量是不可更改的,并且總是static和final。
  通過(guò)使用關(guān)鍵字implement,你可以在定義類時(shí)繼承一個(gè)接口。不過(guò)與extends不同的是,一個(gè)類可以同時(shí)繼承多個(gè)接口。
  使用接口的優(yōu)點(diǎn)在何處呢?通過(guò)創(chuàng)建一個(gè)接口,你可以說(shuō)明一整套抽象的成員函數(shù)而無(wú)須去具體實(shí)現(xiàn)它,所有繼承了這個(gè)接口的類,都將有著具有相同原形的成員函數(shù)。例如,你想所有的shapes都有一個(gè)draw()成員函數(shù),你可以創(chuàng)建一個(gè)接口并且用Shape命名:

public interface Shape
void draw();

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

4:類的轉(zhuǎn)換
  類的轉(zhuǎn)換,與不同類型的變量之間的轉(zhuǎn)換有相似之處,但并不一樣。
  我們可以把一個(gè)父類的對(duì)象轉(zhuǎn)換成一個(gè)子類對(duì)象,下面的代碼說(shuō)明一個(gè)類轉(zhuǎn)換的例子,其中Y類是從X類繼承而來(lái)的:

Y y=new Y();
X x;
x=y;

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

5:null,this和supper變量
  所有的類都有三種變量:null、this和supper。
  null變量不指向任何實(shí)際對(duì)象,而是指向一個(gè)空對(duì)象,如下例所示:

Rectangle rect=null;

  該例產(chǎn)生一個(gè)矩形類的變量,但不創(chuàng)建一個(gè)實(shí)際的對(duì)象。另外,假如一個(gè)成員函數(shù)需要一個(gè)對(duì)象作為參數(shù)時(shí),你同樣可以用null代替。
  this變量指向?qū)ο蟊旧?,一個(gè)類可以通過(guò)this變量來(lái)獲得一個(gè)代表它自身的對(duì)象變量。
  supper變量是一個(gè)指向類父類構(gòu)造成員函數(shù)的變量,你可以通過(guò)調(diào)用它,來(lái)迅速完成對(duì)子類的構(gòu)造成員函數(shù)的設(shè)計(jì)。

以上是“Java中類有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI