類是java的核心和本質。它是Java語言的基礎,因為類定義了對象的本性。既然類是面向對象程序設計Java語言的基礎,因此,你想要在Java程序中實現的每一個概念都必須封裝在類以內。
從本書的開始我們就使用類了。當然,使用的都是非常簡單的類。也許理解類的最重要的事情就是它定義了一種新的數據類型。一旦定義后,就可以用這種新類型來創建該類型的對象。這樣,類就是對象的模板(template),而對象就是類的一個實例(instance)。既然一個對象就是一個類的實例,所以你經常看到object和instance這兩個詞可以互換使用。
6.1.1、類的通用格式
當你定義一個類時,你要聲明它準確的格式和屬性。你可以通過指定它包含的數據和操作數據的代碼來定義類。盡管非常簡單的類可能只包含代碼或者只包含數據,但絕大多數實際的類都包含上述兩者。你將看到,類的代碼定義了該類數據的接口。
使用要害字class來創建類。在這一點上,類實際上被限制在它的完全格式中。類可以(并且經常)是一個組合體。類定義的通用格式如下所示:
class classname %26#123;
type instance-variable1;
type instance-variable2;
// ...
type instance-variableN;
type methodname1(parameter-list) %26#123;
// body of method
%26#125;
type methodname2(parameter-list) %26#123;
// body of method
%26#125;
// ...
type methodnameN(parameter-list) %26#123;
// body of method
%26#125;
%26#125;
在類中,數據或變量被稱為實例變量(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 %26#123; double width; double height; double depth;
%26#125;
前面已經說過,一個類定義一個新的數據類型。在本例中,新的數據類型名為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,使用下面的語句:新聞熱點
疑難解答