1. 程式人生 > >【3.26】抽象方法,接口

【3.26】抽象方法,接口

gpo 方法 關鍵字 extend 銷售 blog end 不能 xxx

  【2018-03-26 18:54:48】

抽象方法:

抽象方法的註意事項:必須聲明在抽象類中,抽象方法沒有方法體,只有方法的聲明,需要用abstract關鍵字進行修飾。示例如下:

abstract void xxx();
public abstract class Vehicle {
    //行駛
    public abstract void run();
}

其次,抽象類中是可以聲明普通方法的,例如:

public abstract class Vehicle {
    //行駛的行為
    public abstract void run();
    //抽象類中可以聲明普通方法
public void msg(){ System.out.println("這是父類"); } }

聲明抽象方法,就是為了讓子類重寫,並且抽象類不能夠實例化,例如:

Demo.java
public
abstract class Demo { abstract void run(); }
Demo2.java
public class Demo2 extends Demo {
    @Override
    void run() {
    }
}

當Demo2繼承Demo抽象類時,Demo2會自動重寫父類Demo的run()方法。

另外,創建抽象類的對象,直接重寫了抽象方法,抽象類是不能夠直接創建對象的。

在計算薪水的方法的小Demo中,首先創建了員工Staff抽象類,並且類中有計算薪水的方法:pay(),在普通員工類、經理類、銷售類繼承了抽象類並重寫了的pay()方法,在測試類中,抽象父類指向子類的對象,這也是多態的一種體現。

接口:

首先,接口不可以實例化,接口下可以聲明屬性。接口中的方法都是public abstract方法,沒有方法體。實現類必須實現接口的所有方法,接口中的變量都是靜態常量。

接口指向實現類的對象,也是多態的一種體現。示例:

Demo.java
public interface Demo {
    void face();
}
public class Demo2 implements
Demo { @Override public void face() { } }

在以上的示例中,Demo2.java為Demo.java接口的實現類。聲明接口時,使用interface進行修飾。在實現類中,使用implements實現接口,並且重寫父類的face()方法。

以下為接口的註意事項:

1.接口不能夠創建對象

2.接口中的方法都是抽象方法

3.接口中的屬性都是靜態常量

4.實現類一次可以實現多個接口

5.一個實現類可以繼承一個類的同時,實現多個接口,繼承extends寫在implements前面

6.接口之間可以實現多繼承

A.java
public interface A {
    public void a();
    public void a1();
}

在A.java中,創建了一個接口,並且有a和a1兩個屬性。

B.java
public interface B extends A {
    public void b();
    public void b1();
}

在B.java中,接口B繼承了接口A

D.java
public class D implements A, B, C {

    @Override
    public void b() {
    }

    @Override
    public void b1() {
    }

    @Override
    public void a() {
    }

    @Override
    public void a1() {
    }

}

在D.java中,同時實現了多個接口。

【3.26】抽象方法,接口