1. 程式人生 > >JAVA抽象類和抽象方法(abstract)

JAVA抽象類和抽象方法(abstract)

highlight system 抽取 類方法 abs 子類 ack arp 一個

當父類的某些方法不確定時,可以用abstract關鍵字來修飾該方法[抽象方法],用abstract來修飾該類[抽象類]。

我們都知道,父類是將子類所共同擁有的屬性和方法進行抽取,這些屬性和方法中,有的是已經明確實現了的,有的還無法確定,那麽我們就可以將其定義成抽象,在後日子類進行重用,進行具體化。這樣,抽象類也就誕生了。

  例如,定義了“動物”父類,其中“動物名稱”和“動物年齡”屬性已經明確了,但是“動物叫”的方法沒有明確,此時就可以將“動物叫”定義為抽象方法。

  所以,抽象類是為了把相同的但不確定的東西的提取出來,為了以後的重用。定義成抽象類的目的,就是為了在子類中實現抽象類。

package javastudy;

public class AbstractDemo1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }
}

// 這就是一個抽象類
abstract class Animal {
    String name;
    int age;

    // 動物會叫
    public abstract void cry(); // 不確定動物怎麽叫的。定義成抽象方法,來解決父類方法的不確定性。抽象方法在父類中不能實現,所以沒有函數體。但在後續在繼承時,要具體實現此方法。
}

// 抽象類可以被繼承
// 當繼承的父類是抽象類時,需要將抽象類中的所有抽象方法全部實現。
class cat extends Animal {
    // 實現父類的cry抽象方法
    public void cry() {
        System.out.println("貓叫:");

    }
}

  

二、用abstract修飾的類,即抽象類;用abstract修飾的方法,即抽象方法。抽象方法不能有方法體,由子類繼承抽象父類,去重寫父類的抽象方法。

三、抽象類不能被實例化,因為抽象類中的方法未具體化,是一種不完整的類,直接實例化就沒有任何意義。

四、抽象類不一定包含abstract方法,抽象類中可以沒有abstract方法。

五、一旦類中包含了abstract方法,改類一定是抽象類。

JAVA抽象類和抽象方法(abstract)