class A {
void test() {
}
}
class B extends A {
void test() {
}
public static void main(String[] args)
{
B b=new B();
//insert code here
}
}
如何为 B 类的对象 b 调用 A 类的 test
方法?
专门针对对象b
最佳答案
你不能从 B 的外部调用它...但是在 B 中你可以这样调用它:
super.test();
这可以从 B 中的任何代码完成 - 它不必在 test()
方法本身中。例如:
public void foo() {
// Call the superclass implementation directly - no logging
super.test();
}
@Override void test() {
System.out.println("About to call super.test()");
super.test();
System.out.println("Call to super.test() complete");
}
请注意 @Override
注释,它告诉编译器您确实确实要重写一个方法。 (撇开其他不谈,如果你在方法名称中有错别字,这将帮助你快速找到它。)
您不能从 B 外部调用它的原因是 B 重写 方法...重写的目的是替换原始行为。例如,在带有参数的方法中,B 可能希望在调用父类(super class)实现或做其他事情之前对参数做一些事情(根据自己的规则验证它)。如果外部代码只能调用 A 的版本,那将违反 B 的期望(和封装)。
关于java - 对子类的对象使用父类(super class)的相同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15631212/