真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java類(lèi)基礎(chǔ)(轉(zhuǎn))

java 類(lèi)基礎(chǔ)(轉(zhuǎn))[@more@]類(lèi)是Java 的核心和本質(zhì)。它是Java 語(yǔ)言的基礎(chǔ),因?yàn)轭?lèi)定義了對(duì)象的本性。既然類(lèi)是面向?qū)ο蟪绦蛟O(shè)計(jì)Java 語(yǔ)言的基礎(chǔ),因此,你想要在Java 程序中實(shí)現(xiàn)的每一個(gè)概念都必須封裝在類(lèi)以?xún)?nèi)。

因?yàn)轭?lèi)是Java 的基礎(chǔ),所以在本章和以后幾章中對(duì)其進(jìn)行介紹。本章將介紹類(lèi)的基本元素,并學(xué)習(xí)如何運(yùn)用類(lèi)來(lái)創(chuàng)建對(duì)象。同時(shí)也將學(xué)習(xí)方法、構(gòu)造函數(shù)及this 這個(gè)關(guān)鍵字。
從本書(shū)的開(kāi)始我們就使用類(lèi)了。當(dāng)然,使用的都是非常簡(jiǎn)單的類(lèi)。在前面幾章中創(chuàng)造的類(lèi)主要都包含在main( ) 方法中,用它來(lái)表明Java 句法的基礎(chǔ)。你將看到,類(lèi)的功能實(shí)質(zhì)上比你到目前為止看到的要強(qiáng)大得多。

也許理解類(lèi)的最重要的事情就是它定義了一種新的數(shù)據(jù)類(lèi)型。一旦定義后,就可以用這種新類(lèi)型來(lái)創(chuàng)建該類(lèi)型的對(duì)象。這樣,類(lèi)就是對(duì)象的模板(template ),而對(duì)象就是類(lèi)的一個(gè)實(shí)例(instance)。既然一個(gè)對(duì)象就是一個(gè)類(lèi)的實(shí)例,所以你經(jīng)??吹給bject 和instance 這兩個(gè)詞可以互換使用。

6.1.1 類(lèi)的通用格式
當(dāng)你定義一個(gè)類(lèi)時(shí),你要聲明它準(zhǔn)確的格式和屬性。你可以通過(guò)指定它包含的數(shù)據(jù)和操作數(shù)據(jù)的代碼來(lái)定義類(lèi)。盡管非常簡(jiǎn)單的類(lèi)可能只包含代碼或者只包含數(shù)據(jù),但絕大多數(shù)實(shí)際的類(lèi)都包含上述兩者。你將看到,類(lèi)的代碼定義了該類(lèi)數(shù)據(jù)的接口。

使用關(guān)鍵字class來(lái)創(chuàng)建類(lèi)。在這一點(diǎn)上,類(lèi)實(shí)際上被限制在它的完全格式中。類(lèi)可以(并且常常)是一個(gè)組合體。類(lèi)定義的通用格式如下所示:

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
}
}

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

定義在類(lèi)中的變量被稱(chēng)為實(shí)例變量,這是因?yàn)轭?lèi)中的每個(gè)實(shí)例(也就是類(lèi)的每個(gè)對(duì)象) 都包含它自己對(duì)這些變量的拷貝。這樣,一個(gè)對(duì)象的數(shù)據(jù)是獨(dú)立的且是惟一的。關(guān)于這一點(diǎn)我們將馬上討論,但是這是一個(gè)重要的概念,因此要早一點(diǎn)學(xué)習(xí)。

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

注意:如果你有C++編程經(jīng)驗(yàn)請(qǐng)注意,類(lèi)的聲明和方法的實(shí)現(xiàn)要存儲(chǔ)在同一個(gè)地方并且不能被單獨(dú)定義。由于所有類(lèi)的定義必須全部定義在一個(gè)單個(gè)的源文件中,這有時(shí)會(huì)生成很大的.java 文件。在Java 中設(shè)計(jì)這個(gè)特征是因?yàn)閺拈L(zhǎng)遠(yuǎn)來(lái)說(shuō),在一個(gè)地方指明,定義以及實(shí)現(xiàn)將使代碼更易于維護(hù)。

6.1.2 一個(gè)簡(jiǎn)單的類(lèi)
讓我們先從一個(gè)簡(jiǎn)單的例子來(lái)開(kāi)始對(duì)類(lèi)的研究。下面定義了一個(gè)名為box 的類(lèi),它定義了3個(gè)實(shí)例變量:width,height 和depth 。當(dāng)前,box類(lèi)不包含任何方法(但是隨后將增加一些)。

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

}

前面已經(jīng)說(shuō)過(guò),一個(gè)類(lèi)定義一個(gè)新的數(shù)據(jù)類(lèi)型。在本例中,新的數(shù)據(jù)類(lèi)型名為Box。你可以使用這個(gè)名字來(lái)聲明Box 類(lèi)型的對(duì)象。記住類(lèi)聲明只是創(chuàng)建一個(gè)模板(或類(lèi)型描述),它并不會(huì)創(chuàng)建一個(gè)實(shí)際的對(duì)象。因此,上述代碼不會(huì)生成任何Box 類(lèi)型的對(duì)象實(shí)體。

要真正創(chuàng)建一個(gè)Box 對(duì)象,你必須使用下面的語(yǔ)句:

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

這個(gè)語(yǔ)句執(zhí)行后,mybox 就是Box的一個(gè)實(shí)例了。因此,它將具有“物理的”真實(shí)性?,F(xiàn)在,先不必考慮這個(gè)語(yǔ)句的一些細(xì)節(jié)問(wèn)題。

每次你創(chuàng)建類(lèi)的一個(gè)實(shí)例時(shí),你是在創(chuàng)建一個(gè)對(duì)象,該對(duì)象包含它自己的由類(lèi)定義的每個(gè)實(shí)例變量的拷貝。因此,每個(gè)Box對(duì)象都將包含它自己的實(shí)例變量拷貝,這些變量即width,height,和 depth 。要訪問(wèn)這些變量,你要使用點(diǎn)號(hào)“.”運(yùn)算符。點(diǎn)號(hào)運(yùn)算符(dot operator)將對(duì)象名和成員名連接起來(lái)。例如,要將mybox 的width 變量賦值為100,使用下面的語(yǔ)句:

mybox.width = 100;
該語(yǔ)句告訴編譯器對(duì)mybox 對(duì)象內(nèi)包含的width 變量拷貝的值賦為100 。通常情況下,你可以使用點(diǎn)號(hào)運(yùn)算符來(lái)訪問(wèn)一個(gè)對(duì)象內(nèi)的實(shí)例變量和方法。下面是使用Box 類(lèi)的完整程序:

/* 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);
}
}

你應(yīng)該把包含該程序的的文件命名為BoxDemo.java,因?yàn)閙ain( ) 方法在名為 BoxDemo 的類(lèi)中,而不是名為Box 的類(lèi)中。當(dāng)你編譯這個(gè)程序時(shí),你會(huì)發(fā)現(xiàn)生成了兩個(gè)“.class ”文件,一個(gè)屬于box,另一個(gè)屬于BoxDemo 。Java 編譯器自動(dòng)將每個(gè)類(lèi)保存在它自己的“ .class ”文件中。沒(méi)有必要分別將Box 類(lèi)和Boxdemo 類(lèi)放在同一個(gè)源文件中。你可以分別將它們放在各自的文件中,并分別命名為Box.Java 和 BoxDemo.java 。

要運(yùn)行這個(gè)程序,你必須執(zhí)行BoxDemo.class 。運(yùn)行該程序后,你會(huì)看見(jiàn)如下輸出:

Volume is 3000.0

前面已經(jīng)講過(guò),每個(gè)對(duì)象都含有它自己的、由它的類(lèi)定義的實(shí)例變量的拷貝。因此,假設(shè)你有兩個(gè)Box對(duì)象,每個(gè)對(duì)象都有其自己的depth,width 和height 拷貝。改變一個(gè)對(duì)象的實(shí)例變量對(duì)另外一個(gè)對(duì)象的實(shí)例變量沒(méi)有任何影響,理解這一點(diǎn)是很重要的。例如,下面的程序定義了兩個(gè)Box 對(duì)象:

// 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);

}
}

該程序產(chǎn)生的輸出如下所示:

Volume is 3000.0
Volume is 162.0

你可以看到,mybox1 的數(shù)據(jù)與mybox2 的數(shù)據(jù)完全分離。
本文題目:java類(lèi)基礎(chǔ)(轉(zhuǎn))
本文地址:http://weahome.cn/article/jdejci.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部