中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 類基礎(轉)

發布時間:2020-08-11 20:38:13 來源:ITPUB博客 閱讀:117 作者:ba 欄目:編程語言
java 類基礎(轉)[@more@]類是Java 的核心和本質。它是Java 語言的基礎,因為類定義了對象的本性。既然類是面向對象程序設計Java 語言的基礎,因此,你想要在Java 程序中實現的每一個概念都必須封裝在類以內。

因為類是Java 的基礎,所以在本章和以后幾章中對其進行介紹。本章將介紹類的基本元素,并學習如何運用類來創建對象。同時也將學習方法、構造函數及this 這個關鍵字。
從本書的開始我們就使用類了。當然,使用的都是非常簡單的類。在前面幾章中創造的類主要都包含在main( ) 方法中,用它來表明Java 句法的基礎。你將看到,類的功能實質上比你到目前為止看到的要強大得多。

也許理解類的最重要的事情就是它定義了一種新的數據類型。一旦定義后,就可以用這種新類型來創建該類型的對象。這樣,類就是對象的模板(template ),而對象就是類的一個實例(instance)。既然一個對象就是一個類的實例,所以你經常看到object 和instance 這兩個詞可以互換使用。

6.1.1 類的通用格式
當你定義一個類時,你要聲明它準確的格式和屬性。你可以通過指定它包含的數據和操作數據的代碼來定義類。盡管非常簡單的類可能只包含代碼或者只包含數據,但絕大多數實際的類都包含上述兩者。你將看到,類的代碼定義了該類數據的接口。

使用關鍵字class來創建類。在這一點上,類實際上被限制在它的完全格式中。類可以(并且常常)是一個組合體。類定義的通用格式如下所示:

class classname {

type instance-variable1;

type instance-variable2;

// ...

type instance-variableN;

type methodname1(parameter-list) {

// body of method

}

type methodname2(parameter-list) {

// body of method

}

// ...

type methodnameN(parameter-list) {

// body of method
}
}

在類中,數據或變量被稱為實例變量(instance variables ),代碼包含在方法(methods)內。定義在類中的方法和實例變量被稱為類的成員(members )。在大多數類中,實例變量被定義在該類中的方法操作和存取。這樣,方法決定該類中的數據如何使用。

定義在類中的變量被稱為實例變量,這是因為類中的每個實例(也就是類的每個對象) 都包含它自己對這些變量的拷貝。這樣,一個對象的數據是獨立的且是惟一的。關于這一點我們將馬上討論,但是這是一個重要的概念,因此要早一點學習。

所有的方法和我們到目前為止用過的方法main() 的形式一樣。但是,以后講到的方法將不僅僅是被指定為static或public 。注意類的通用格式中并沒有指定main() 方法。Java 類不需要main( ) 方法。main() 方法只是在定義您程序的起點時用到。而且,Java 小應用程序也不要求main( ) 方法。

注意:如果你有C++編程經驗請注意,類的聲明和方法的實現要存儲在同一個地方并且不能被單獨定義。由于所有類的定義必須全部定義在一個單個的源文件中,這有時會生成很大的.java 文件。在Java 中設計這個特征是因為從長遠來說,在一個地方指明,定義以及實現將使代碼更易于維護。

6.1.2 一個簡單的類
讓我們先從一個簡單的例子來開始對類的研究。下面定義了一個名為box 的類,它定義了3個實例變量:width,height 和depth 。當前,box類不包含任何方法(但是隨后將增加一些)。

class Box { double width; double height; double depth;

}

前面已經說過,一個類定義一個新的數據類型。在本例中,新的數據類型名為Box。你可以使用這個名字來聲明Box 類型的對象。記住類聲明只是創建一個模板(或類型描述),它并不會創建一個實際的對象。因此,上述代碼不會生成任何Box 類型的對象實體。

要真正創建一個Box 對象,你必須使用下面的語句:

Box mybox = new Box(); // create a Box object called mybox

這個語句執行后,mybox 就是Box的一個實例了。因此,它將具有“物理的”真實性。現在,先不必考慮這個語句的一些細節問題。

每次你創建類的一個實例時,你是在創建一個對象,該對象包含它自己的由類定義的每個實例變量的拷貝。因此,每個Box對象都將包含它自己的實例變量拷貝,這些變量即width,height,和 depth 。要訪問這些變量,你要使用點號“.”運算符。點號運算符(dot operator)將對象名和成員名連接起來。例如,要將mybox 的width 變量賦值為100,使用下面的語句:

mybox.width = 100;
該語句告訴編譯器對mybox 對象內包含的width 變量拷貝的值賦為100 。通常情況下,你可以使用點號運算符來訪問一個對象內的實例變量和方法。下面是使用Box 類的完整程序:

/* A program that uses the Box class.

Call this file BoxDemo.java
*/
class Box {

double width; double height; double depth;

}

// This class declares an object of type Box.
class BoxDemo {

public static void main(String args[]) {
Box mybox = new Box();
double vol;

// assign values to mybox's instance variables
mybox.width = 10;
mybox.height = 20;
mybox.depth = 15;

// compute volume of box
vol = mybox.width * mybox.height * mybox.depth;

System.out.println("Volume is " + vol);
}
}

你應該把包含該程序的的文件命名為BoxDemo.java,因為main( ) 方法在名為 BoxDemo 的類中,而不是名為Box 的類中。當你編譯這個程序時,你會發現生成了兩個“.class ”文件,一個屬于box,另一個屬于BoxDemo 。Java 編譯器自動將每個類保存在它自己的“ .class ”文件中。沒有必要分別將Box 類和Boxdemo 類放在同一個源文件中。你可以分別將它們放在各自的文件中,并分別命名為Box.Java 和 BoxDemo.java 。

要運行這個程序,你必須執行BoxDemo.class 。運行該程序后,你會看見如下輸出:

Volume is 3000.0

前面已經講過,每個對象都含有它自己的、由它的類定義的實例變量的拷貝。因此,假設你有兩個Box對象,每個對象都有其自己的depth,width 和height 拷貝。改變一個對象的實例變量對另外一個對象的實例變量沒有任何影響,理解這一點是很重要的。例如,下面的程序定義了兩個Box 對象:

// This program declares two Box objects.

class Box { double width; double height;
double depth;
}

class BoxDemo2 {

public static void main(String args[]) {
Box mybox1 = new Box();
Box mybox2 = new Box();
double vol;

// assign values to mybox1's instance variables
mybox1.width = 10;
mybox1.height = 20;
mybox1.depth = 15;

/* assign different values to mybox2's

instance variables */
mybox2.width = 3;
mybox2.height = 6;
mybox2.depth = 9;

// compute volume of first box
vol = mybox1.width * mybox1.height * mybox1.depth;
System.out.println("Volume is " + vol);

// compute volume of second box
vol = mybox2.width * mybox2.height * mybox2.depth;
System.out.println("Volume is " + vol);

}
}

該程序產生的輸出如下所示:

Volume is 3000.0
Volume is 162.0

你可以看到,mybox1 的數據與mybox2 的數據完全分離。
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆化县| 东乡| 大理市| 仙居县| 清原| 化隆| 枝江市| 谢通门县| 万州区| 民权县| 福州市| 锡林浩特市| 乌拉特前旗| 台湾省| 日照市| 台东县| 霍邱县| 渭南市| 邮箱| 新兴县| 长顺县| 凤台县| 米易县| 龙胜| 平泉县| 和平区| 昌图县| 海安县| 渑池县| 昭平县| 西华县| 宝清县| 陇西县| 台湾省| 紫金县| 南安市| 林甸县| 固原市| 平昌县| 砀山县| 克拉玛依市|