企業(yè)網(wǎng)站建設(shè)的一般原則國(guó)外網(wǎng)站如何搭建網(wǎng)頁(yè)
?
概念:
當(dāng)定義一個(gè)類(lèi)時(shí),常常需要定義一些成員方法來(lái)描述類(lèi)的行為特征,但有時(shí)這些方法的實(shí)現(xiàn)方式是無(wú)法確定的。
例如,前面在定義 Animal 類(lèi)時(shí),walk()方法用于描述動(dòng)物的行走行為,但是針對(duì)不同的動(dòng)物,其行走行為是不同的,因此在 walk()方法中無(wú)法準(zhǔn)確描述動(dòng)物的行走行為。
針對(duì)上面描述的情況,Java 提供了抽象方法。
格式:
抽象方法是使用 abstract 關(guān)鍵字修飾的成員方法,其在定義時(shí)只給出方法名,不需要實(shí)現(xiàn)方法體。抽象方法的定義格式如下:
abstract void 方法名稱(chēng)(參數(shù));
當(dāng)一個(gè)類(lèi)包含了抽象方法,該類(lèi)必須是抽象類(lèi)。抽象類(lèi)和抽象方法一樣,必須使用abstract 關(guān)鍵字進(jìn)行修飾。抽象類(lèi)的定義格式如下:
abstract class 抽象類(lèi)名稱(chēng) {訪問(wèn)權(quán)限 返回值類(lèi)型 方法名稱(chēng)(參數(shù)){ //普通方法,有方法體的實(shí)現(xiàn)return[返回值]; }訪問(wèn)權(quán)限 abstract 返回值類(lèi)型 抽象方法名稱(chēng)(參數(shù));//抽象方法,無(wú)方法體的實(shí)現(xiàn)}
抽象類(lèi)規(guī)則:
- 包含一個(gè)以上抽象方法的類(lèi)必須是抽象類(lèi)
- 抽象類(lèi)和抽象方法都需要使用abstract 關(guān)鍵字?
- 抽象方法只需要聲明而不需要實(shí)現(xiàn)
- 如果一個(gè)類(lèi)繼承了抽象類(lèi),那么該子類(lèi)必須實(shí)現(xiàn)抽象類(lèi)中的全部抽象方法
實(shí)例:
- 創(chuàng)建一個(gè)“shape”抽象類(lèi),該抽象類(lèi)包含表示形狀的string類(lèi)型的成員變量namey,和兩個(gè)抽象方法,分別為求形狀周長(zhǎng)的抽象方法perimeter0,求形狀面積的抽象方法area()
- 創(chuàng)建兩個(gè)類(lèi),一個(gè)為正方形類(lèi)“Square”,正方形類(lèi)有一各成員變量:doublelength,一個(gè)為圓類(lèi)Cirde”,圓類(lèi)有一各成員變量:double radius,要求繼承上面的抽象類(lèi)“shape”,并實(shí)現(xiàn)“shape”中的兩個(gè)抽象方法?
package 類(lèi);abstract class shape {String name;abstract void perimater();abstract void area();public static void main (String[]args) {Square s = new Square();s.length = 1;s.perimater();s.area();Circle x = new Circle();x.radius = 1;x.perimater();x.area();}
}class Square extends shape{double length;void perimater() {System.out.println(""+4*length);}void area() {System.out.println(""+length*length); }
}class Circle extends shape{double radius;void perimater() {System.out.println(""+3.14*2*radius);}void area() {System.out.println(""+3.14*radius*radius);}}
代碼分析:
?
?