【3.26】抽象方法,接口
阿新 • • 發佈:2018-03-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 implementsDemo { @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】抽象方法,接口