This question already has answers here:
How to call the overridden method of a superclass?
(11个答案)
6年前关闭。
这个问题是在采访中问我的。我的子类中有一个重写的方法。我想使用子类的实例来调用超类的方法。请记住,该方法已被覆盖。
以下代码的输出是
如果我想使用覆盖类的对象打印
输出
(11个答案)
6年前关闭。
这个问题是在采访中问我的。我的子类中有一个重写的方法。我想使用子类的实例来调用超类的方法。请记住,该方法已被覆盖。
以下代码的输出是
NO NO PRINT HI
。如果我想使用覆盖类的对象打印
Print Hello
怎么办?我怎么做?class OverrideSuper {
public void printHello() {
System.out.println("Print Hello");
}
}
public class Overriding extends OverrideSuper {
public void printHello() {
System.out.println("NO NO PRINT HI");
}
public static void main(String[] args) {
//OverrideSuper obj1 = new OverrideSuper();
Overriding obj2 = new Overriding();
obj2.printHello();// this calls printHello() of class Overriding.
//I want to call printHello() of OverrideSuper using obj2. How do I do that???
}
}
最佳答案
我认为这将满足您的要求!尝试这个
当您调用obj2.printHello();
时,执行将移至Overriding
s printHello()
,在该方法中,我已使用super.printHello();
,这意味着首先调用超类的printHello()
and compiler prints Print Hello
,然后再次执行到Overriding
s 和printHello()
class OverrideSuper {
public void printHello() {
System.out.println("Print Hello");
}
}
public class Overriding extends OverrideSuper {
public void printHello() {
super.printHello();
System.out.println("NO NO PRINT HI");
}
public static void main(String[] args) {
// OverrideSuper obj1 = new OverrideSuper();
Overriding obj2 = new Overriding();
obj2.printHello();// this calls printHello() of class Overriding.
// I want to call printHello() of OverrideSuper using obj2. How do I do
// that???
}
}
输出
Print Hello
NO NO PRINT HI
09-30 21:03