Java 抽象類 和 模板設計模式(Template)
阿新 • • 發佈:2019-01-26
抽象類,使用abstract宣告的類,用於被子類繼承
抽象方法一定要放在抽象類中,抽象類也可以包含非抽象方法;
定義抽象類:
abstract class A{
private Stirng info = "A";
public void print(){
System.out.println(info);
}
public abstract void get(); //抽象方法:只有宣告沒有方法體{}
}
抽象類不能直接例項化,可以使用物件的向上轉型方式,通過子類來進行例項化操作。
抽象類例項化:
class lmpl extends A{ public void get(){ //覆寫的抽象方法 System.out.println("Hello World"); } } public class Main{ public static void main(String args[]){ A a = new lmpl(); a.print(); a.get(); } }
程式執行結果:A Hello World
子類(如果不是抽象類)必須覆寫抽象父類的所有抽象方法
抽象類可以沒有抽象方法,但仍然不能直接例項化;
對於static修飾的抽象類:
·無法直接使用static普通抽象類
·定義內部抽象類時,可以用static修飾
abstract class A{ static abstract class B{ //內部抽象類,static聲明後成為一個外部類 public abstract void print(); } } class lmpl extends A.B{ //繼承抽象類 public void print(){ System.out.println("Hello World"); } } public class Main(){ public static void main(String args[]){ A.B b = new lmpl(); //例項化物件,向上轉型(物件 內部抽象類,例項化為子類) b.print(); } }
抽象類應用——模板設計模式(Template)
定義一個抽象類,這個類規定了操作行為,不同的子類可以以不同的方式實現這些抽象方法。
如果想要所有子類都能正常完成操作,必須按照制定的方法進行復寫,此時的抽象類所起的作用就是一個類定義模板的功能。