跳至主要內容

Java

LincZero大约 1 分钟

Java

目录

抽象基类

抽象类简概

  • 作用:位于上层的类更具有通用性,甚至可能更加抽象
  • 举例:Employee和Student的共同超类为Person
  • 性质:抽象类不能被实例化

抽象类使用(abstract关键字)

  • 抽象方法

    • 使用abstract关键字,这样就完全不需要实现超类的方法

      public abstract String getDescription();	// no implementation required,不需要实现
      
  • 抽象类

    • 为了提高程序的清晰度,包含一个或多个抽象方法的类本身必须被声明为抽象的。 但类即使不含抽象方法,也可以将类声明为抽象类

      public abstract class Person
      {
          ...
          public abstract String getDescription();
      }
      

补充

除了抽象方法之外,抽象类还可以包含具体数据和具体方法

但许多程序员认为,在抽象类中不能包含具体方法。建议尽量将通用的域和方法(不管是否是抽象的)放在超类(不管是否是抽象类)中

在Java程序设计语言中,抽象方法是一个重要的概念。在接口(interface)一章中将会看到更多的抽象方法


与C++不同

  • Java

    • public abstract class Person				// 抽象基类(关键字强制被声明,目的只是提高程序的清晰度)
      {
          ...
          public abstract String getDescription();// 抽象方法
      }
      
  • C++

    • 只要有一个纯虚函数,这个类就是抽象类。在C++中,没有提供用于表示抽象类的特殊关键字。

      class Person
      {
      public:
          virtual string getDescription() = 0;	// 纯虚函数
      }