1. 程式人生 > >Java 抽象類 和 模板設計模式(Template)

Java 抽象類 和 模板設計模式(Template)

抽象類,使用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)

定義一個抽象類,這個類規定了操作行為,不同的子類可以以不同的方式實現這些抽象方法。

如果想要所有子類都能正常完成操作,必須按照制定的方法進行復寫,此時的抽象類所起的作用就是一個類定義模板的功能。