1. 程式人生 > >Java多態性 抽象類

Java多態性 抽象類

animal 向上 項目 擴展 標識 face 參數 imp ext

一 多態性是面向對象的三大特征之一
多態的含義是:對外一種表現形式,內在有多種具體實現

Java中多態的具體體現
方法重載
方法覆蓋
多態參數(新內容,重點、難點)

多態環境下對象造型

向下造型 –又稱向下轉型

向上造型 –又稱向上轉型

例如:(裏面包含了多態的對象造型等)

public class aabb {

public static void main(String[] args) {

dog aDog=new dog();
aDog.eat1();
aDog.jiao();
Animal animal=new dog();
dog x= (dog)animal;
x.play();
Animal a= new pig();
pig y=(pig)a;
y.play();
y.eat2();
cat Cat=new cat();
Cat.he();
Cat.eat();
//Animal b = new cat();
//b.eata();

}

}
class Animal {

void play(){
System.out.println("貓在玩小球球");


} void eata(){
System.out.println("動物吃肉");
}


}

class cat extends Animal{

void eat(){
//super.eata();
System.out.println("貓喝著喝著又餓了,於是跳到河裏捉魚,不幸的是它被淹死了");
}
void he(){
System.out.println("之後貓跑到河邊喝水");
}
}


class dog extends Animal{
void eat1(){
System.out.println("狗餓的汪汪的叫");

}void jiao(){
System.out.println("之後找到骨頭在吃骨頭");
}
}

class pig extends Animal{
void eat2(){
System.out.println("一頭豬在旁邊肆無忌憚的吃草");
}
}
二 抽象類
用abstract修飾的類就是抽象類。如果某個類中包含有抽象方法,那麽該類就必須定義成抽象類。但是抽象類中不一定有抽象方法。
關鍵字abstract定義抽象類,一般語法:
[訪問權限] abstract class 類名 {
成員列表
}
抽象類只能用作基類,表示的是一種繼承關系。繼承抽象類的非抽象類必須實現其中的所有抽象方法,而已實現方法的參數、返回值要和抽象類中的方法一樣。否則,該類也必須聲明為抽象類。
關鍵字abstract聲明抽象方法,一般語法:
[訪問權限] abstract 返回值類型 方法名稱(參數列表);
抽象的作用
在面向對象領域,抽象類主要用來進行類型隱藏;也就是使用抽象的類型來編程,但是具體運行時就可以使用具體類型。

利用抽象的概念,能夠在開發項目中創建擴展性很好的架構,優化程序。

抽象類,抽象方法,在軟件開發過程中都是設計層面的概念。也就是說,設計人員會設計出抽象類,抽象方法,程序員都是來繼承這些抽象類並覆蓋抽象方法,實現具體功能。
三 Java接口是一系列方法的聲明,是一些抽象的集合
接口的基本格式
[修飾符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;

[public] [abstract] 方法;
}
接口名:必選參數,用於指定接口的名稱,接口名必須是合法的Java標識符。一般情況下,要求首字母大寫。
extends 父接口名列表:可選參數,用於指定要定義的接口繼承於哪個父接口。當使用extends關鍵字時,父接口名為必選參數。父接口可以存在多個,用逗號隔開。
方法:接口中的方法只有定義而沒有被實現
Java接口繼承接口的原則:
Java接口可以繼承多個接口
接口繼承接口依然使用關鍵字extends
接口繼承與類繼承對比:Java類的繼承是單一繼承,Java接口的繼承是多重繼承。
類實現接口的基本格式:
[修飾符] class <類名> [extends 父類名] [implements 接口列表]{

}

Java多態性 抽象類