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

首頁 > 學院 > 開發設計 > 正文

成員函數的說明和使用

2019-11-18 15:05:11
字體:
來源:轉載
供稿:網友

  1:類的成員函數的說明

  成員函數相當于C或C++中的函數。你應該用如下的方式說明一個成員函數:
Type name (Parameter)
//function body
注重:每一個成員函數必須返回一個值或聲明返回為空(void)。它返回類型的說明告訴編譯器它將返回什么類型的值。在某些情況下,成員函數需要表示它是否成功的完成了它的工作,此時返回類型通常為布爾型的。參數表是用逗號分開的一組變量,它將為成員函數提供所需信息。
  下面例子中定義了一個成員函數。通過它,你的矩形類可以計算自己的面積了:

int getArea(int w,int h)
{
int a;
a=w*h;
return a;
}
  
  另外,矩形還需要對自己進行描繪,因此它需要成員函數drawRect(),此時,你的矩形類的定義將如下所示:

public class DrwRect
{
public static void main(String args[])
{
class Rectangle
{
int width,height,area;
public Rectangle(int w,int h)
{
width=w;
height=h;
area=getArea(w,h);
}

PRotected int getArea(int w,int h)
{
int a;
a=w*h;
return a;
}

public void drawRect()
{
int i,j;
for(i=width;i>0;i--)
System.out.print("#");
System.out.print("") ;

for(i=height-2;i>0;i--)
System.out.print("#");

for(j=width-2;i>0;j--)
System.out.print("");

System.out.print("#");

for(i=width;i>0;i--)
System.out.print("#");

System.out.print("");
}
} //Rectangle

int w=Integer.valueOf(args[0]).intValue();
int h=Integer.valueOf(args[1]).intValue();
Rectangle myrect=new Rectangle(w,h);
myrect.drawRect();
}
}

  上例中最后一個“#”號后面還有一個System.out.print("")這是由于這個成員函數在上一行沒有結束而且緩沖區沒有溢出時將不把輸出結果寫屏。若你使用print成員函數,卻沒有得到輸出,這時仔細確認一下你是否以""來結束你的輸出流。

2:不同類型的成員函數
  在上例的成員函數聲明中你需要注重兩點:getArea()定義為private型,drawRect()定義為public型。public型意味著任何類都可以調用它。private型,它只能被所聲明的類內部調用。這些說明類型同樣適用于數據變量。
  若有人想改變一個私有變量,通常要引用下面的成員函數:

public void setWidth(int w)
{
width=w;
}

  注重:在java中,protected只是作為要害字出現,而沒有相應的功能。

3:成員函數的重載
  假如你必須在不同情況下發送不同的信息給同一個成員函數的話,該怎么辦呢?你可以通過對此成員函數說明多個版本(version)的方法來實現重載。重載的本質是創建了一個新的成員函數:你只需給它一個不同的參數列表(parameterlist),如下例所示:

void get Area(int w,int h);
void get Area(float w,float h);

  在第二種情況下,成員函數get Area()接受兩個浮點變量作為它的參數,編譯器根據調用時的不同參數來決定該調用哪一種成員函數,假如你把兩個整數提供給成員函數,你就調用第一個成員函數;假如你把兩個浮點數提供給成員函數,第二個成員函數就被調用。

4:靜態成員
  除了public、private和protected以外,你還可以把成員說明為static(靜態)。static修飾符表明一個變量或成員函數對所有類的實例都是相同的,你也許想使用一個所有Rectangle類都可以使用的變量,來說明該類的版本(version),假如你把它說明成一個static,那么該變量將對該類的所有實例都是一樣的,如:

static int version=1;

  靜態成員函數和靜態變量的優點就在于他們能在沒有創建類的任何一個實例的情況下被引用,引用時在“.”域前,可直接使用類名而無須使用對象名。例如,drawRect成員函數使用了System.out.println成員函數,但實際上你卻未曾創建一個某個System類的對象,這正是因為out是System類的一個靜態變量,所以你可以直接使用這個成員函數而無須定義一個System對象。

5:構造和析構成員函數
  類有一個非凡的成員函數叫做構造成員函數,它通常用于初始化類的數據成員。在創建對象時,會自動調用類的構造成員函數。Java中的構造成員函數必須與該類具有相同的名字,另外,構造成員函數一般都應用public類型來說明,這樣才能在程序任意的位置創建類的實例--對象。
  下面是一個Rectangle類的構造成員函數,它帶有兩個參數,分別表示矩形的長和寬:
public Rectangle(int w,int h)
{
width=w;
height=h;
area=getArea(w,h);
}

  除了構造成員函數以外,類還提供了析構成員函數,當對象被從內存中刪除時,該成員函數將會被自動調用。通常,在析構成員函數內,你可以填寫用往返收對象內部的動態空間的代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 自贡市| 宜都市| 洛宁县| 常熟市| 东莞市| 雷州市| 六枝特区| 元阳县| 息烽县| 威宁| 葫芦岛市| 龙川县| 双桥区| 鞍山市| 长葛市| 原阳县| 阳泉市| 穆棱市| 河东区| 林周县| 乌兰察布市| 临夏市| 兴国县| 延边| 平原县| 河北省| 铅山县| 西青区| 夏河县| 德阳市| 玉溪市| 昭通市| 成武县| 平遥县| 牙克石市| 中西区| 伊吾县| 务川| 四子王旗| 若羌县| 故城县|