高级类特性----抽象类(abstract class)

抽象类(abstract class)

随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它没有具体的实例,这样的类叫做抽象类。

abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法

抽象方法:只有方法的声明,没有方法的实现。以分号结束
  abstract int abstractMethod1( int a );

含有抽象方法的类必须被声明为抽象类

抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,并提供方法体

不能用abstract修饰私有方法,构造方法,静态方法

抽象类举例

abstract class A {
  abstract void m1( );
  public void m2( ) {
    System.out.println("A类中定义的m2方法");
  }
}

class B extends A {
  void m1( ) {
    System.out.println("B类中定义的m1方法");
  }
}

public class Test {
  public static void main( String args[ ] ) {
    A c = new B( );
    c.m1( );
    c.m2( );
  }
}

抽象类应用

抽象类是用来模型化那些父类无法确定全部实现,而是由其子类提供具体实现的对象的类

public class TestAbstract {

  public static void main(String[] args) {
    E e = new F();
  }
}

abstract class E {
  abstract void test();
  private void aa() {}
}

class F extends E {

  @Override
  void test() {
  }
  void aa() {}
}

上一篇:Java高级类特性(一)


下一篇:Swift优雅的实现枚举的定义及使用