调用过度骑行的基类方法

时间:2012-09-15 15:06:26

标签: java inheritance

我在这个例子中说明了我的问题

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 关键字的答案。但采访者否认了这一说法。他说他会给我一个提示并说虚函数。我不知道如何使用该提示。

6 个答案:

答案 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 !!!