Java 如何直接从子类调用重写的超类方法
这就是我编写代码调用它的方式Java 如何直接从子类调用重写的超类方法,java,oop,Java,Oop,这就是我编写代码调用它的方式 class a{ public void foo(int a){ System.out.println("super"); } } class b extends a{ public void foo(int a){ System.out.println("sub"); } } 但是它调用子类方法 。。。但是它调用子类方法 这就是凌驾于。。。因此,当您在子类实例上调用该方法时,您将得到该方法的子类重写 另一方面,子类本身可以在其
class a{
public void foo(int a){
System.out.println("super");
}
}
class b extends a{
public void foo(int a){
System.out.println("sub");
}
}
但是它调用子类方法
。。。但是它调用子类方法
这就是凌驾于。。。因此,当您在子类实例上调用该方法时,您将得到该方法的子类重写
另一方面,子类本身可以在其超类中调用方法的重写版本:
a ob = new b();
ob.foo(7);
。。。哪个会打印
class A {
public void foo() {
System.out.println("super");
}
}
class B extends A {
public void foo() {
super.foo(); // call the overridden method
System.out.println("sub");
}
}
如果在B
实例上调用foo
你们真的确定没有其他方法可以解决这个问题吗
这是最重要的。重写的方法不能从类外部访问。但是您可以在子类本身中调用它。要从子类中的
调用super
类方法,您可以使用super
关键字。可能重复:你们真的确定没有其他方法可以绕过这个问题吗?恐怕在java中没有办法禁用多态性
,它是java语言和JVM的固有特性,JVM是java的尖塔之一,它严重依赖于JVM。
super
sub