我在这个例子中说明了我的问题
class Car {
public void start(){
System.out.println("Car Started!!!");
}
}
class Mercedes extends Car {
public void start(){
System.out.println("Mercedes Started!!!");
}
}
现在,在我的主程序中,我写了
Mercedes m = new Mercedes();
m.start();
它打印:梅赛德斯开始!!!
如何使用相同的对象调用start()
类的Car
方法,以便输出可以
开车了!!! 。
修改:
实际上在我参加的一次采访中被问到了。我给出了 super 关键字的答案。但采访者否认了这一说法。他说他会给我一个提示并说虚函数。我不知道如何使用该提示。
答案 0 :(得分:3)
您的方法应该调用超级实现,如。
public void start(){
super.start();
System.out.println("Mercedes Started!!!");
}
或者没有。在这种情况下,您说您已经替换了父项的实现。
虽然这不是一个好主意,但您可以通过添加方法解决此问题。
public void startCar(){
super.start();
}
答案 1 :(得分:1)
该方法已在子类中被重写,因此它有效地替换了超类上的方法。
子类本身可以调用超类中的方法:
class Mercedes extends Car {
public void startFromCar() {
super.start();
}
public void start(){
System.out.println("Mercedes Started!!!");
}
}
答案 2 :(得分:1)
关键字super
class Car {
public void start(){
System.out.println("Car Started!!!");
}
}
class Mercedes extends Car {
public void start(){
super.start();
}
}
编辑:
class Car {
public void start(){
System.out.println("Car Started!!!");
}
}
class Mercedes extends Car {
}
现在,如果你致电new Mercedes().start();
,“开车!!!”打印出来。
答案 3 :(得分:1)
您必须向Mercedes
类添加另一个方法来调用超类的start
方法:
public void superStart() { super.start(); }
super
关键字允许您访问要继承的类(超类)。关于它的更多信息here。
答案 4 :(得分:1)
您已覆盖子类中Parent类的方法。
要访问此类方法,请使用super
关键字。
如此改变
class Mercedes extends Car {
public void start(){
System.out.println("Mercedes Started!!!");
}
}
到
class Mercedes extends Car {
public void start(){
super.start();
System.out.println("Mercedes Started!!!");
}
}
将打印
Car Started!!!
Mercedes Started!!!
或者如果您想在不改变给定函数的情况下单独访问,请尝试在Mercedes
类中定义一个新方法。
public void startCar(){
super.start();
}
调用此功能将符合您的目的。
答案 5 :(得分:0)
还有另一种选择
class Car {
public void start(){
System.out.println("Car Started!!!");
}
}
Class Mercedes extends Car {
//nothing here
}
然后是电话
Mercedes m = new Mercedes();
m.start();
将打印:
车开始了!!!
如果你想在印刷品上有一个类似于梅赛德斯的物品而不是汽车开始! 看起来应该是这样的
class AlfaRomeo extends Car {.
@override
public void start(){
System.out.println("Car Started!!!");
System.out.println("Its AlfaRomeo!!!");
}
}
@override telld java使用childs方法而不是parent。
AlfaRomeo a = new AlfaRomeo();
a.start();
所以打印将是:
车开始了!!!它的AlfaRomeo !!!