为什么 Java 类不能同时是抽象类和最终类?
抽象类
包含 0 个或多个抽象方法的类称为抽象类。如果它包含至少一个抽象方法,则必须将其声明为抽象类。
如果要使用抽象类中的具体方法,则需要继承该类,为抽象方法(如果有)提供实现,然后使用子类对象调用所需的方法。
示例
在以下 Java 示例中,抽象类 MyClass 包含一个名为 display 的具体方法。
从另一个类(AbstractClassExample)中,我们继承了 MyClass 类并使用子类对象调用其具体方法 display。
abstract class MyClass {
public void display() {
System.out.println("This is a method of abstract class");
}
}
public class AbstractClassExample extends MyClass {
public static void main(String args[]) {
new AbstractClassExample().display();
}
}输出
This is a method of abstract class
最终类
如果声明一个类为 final,则不能扩展它。如果尝试扩展最终类,则会生成一个编译时错误,提示“无法从最终的 SuperClass 继承”。
示例
在以下 Java 程序中,我们有一个名为 SuperClass 的最终类,并且我们试图从另一个类(SubClass)继承它。
final class SuperClass {
public void display() {
System.out.println("This is a method of the superclass");
}
}编译时错误
编译时,此程序会生成如下所示的编译错误:
SubClass.java:7: error: cannot inherit from final SuperClass
public class SubClass extends SuperClass{
^
1 error抽象类和最终类
如果声明一个类为抽象类,则要使用它必须扩展它;如果声明一个类为最终类,则不能扩展它。由于两者相互矛盾,因此不能将一个类同时声明为抽象类和最终类。如果这样做,将生成编译时错误。
示例
public final abstract class Example {
public void sample() {
}
}编译时错误
Example.java:1: error: illegal combination of modifiers: abstract and final
public final abstract class Example {
^
1 error
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP