我们可以在 Java 中覆盖 final 方法吗?
java 8object oriented programmingprogramming
覆盖是实现多态性的机制之一。当我们有两个类时,其中一个类使用 extends 关键字继承另一个类的属性,并且这两个类的方法相同,包括参数和返回类型(例如,sample)。
因为它是继承。如果我们实例化子类,则会在子类对象中创建超类成员的副本,因此这两个方法都可用于子类。
当我们调用此方法(sample)时,JVM 会根据用于调用该方法的对象调用相应的方法。
覆盖 final 方法
不,您不能在 java 中覆盖 final 方法。如果您尝试这样做,它会生成一个编译时错误,提示
示例
class Super{ public final void demo() { System.out.println("This is the method of the superclass"); } } class Sub extends Super{ public final void demo() { System.out.println("This is the method of the subclass"); } }
编译时错误
Sub.java:7: error: demo() in Sub cannot override demo() in Super public final void demo() { ^ overridden method is final 1 error
如果您尝试在 eclipse 中编译相同的程序,您将收到以下错误 −