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)

定义一个抽象类,这个类规定了操作行为,不同的子类可以以不同的方式实现这些抽象方法。


如果想要所有子类都能正常完成操作,必须按照制定的方法进行复写,此时的抽象类所起的作用就是一个类定义模板的功能。


你可能感兴趣的:(Java)