【发布时间】:2017-05-10 05:19:08
【问题描述】:
我有一个名为 Hospital.java 的接口
public interface Hospital {
public void operate();
public void doScan();
public void doVaccination();
}
我有一个名为 StreetHospital.java 的抽象类
public abstract class StreetHospital implements Hospital{
public void operate(){
System.out.println("Street Hospital operate");
}
}
现在我正在使用另一个类 CommunityHospital.java 来扩展 StreetHospital.java
public class CommunityHospital extends StreetHospital{
public void doScan(){
System.out.println("CommunityHospital doScan");
}
public void doVaccination(){
System.out.println("CommunityHospital doVaccination");
}
public void operate(){
System.out.println("CommunityHospital operate");
}
}
我正在我的 MainHospital 类中创建 CommunityHospital 对象
public class MainHospital {
public static void main(String[] args){
CommunityHospital ch = new CommunityHospital();
ch.operate();
ch.doScan();
ch.doVaccination();
}
}
我得到这个输出:
CommunityHospital operate
CommunityHospital doScan
CommunityHospital doVaccination
我的问题是如何在输出中打印“Street Hospital operation”sysout 语句?
【问题讨论】:
-
从你的主,你不能,因为它被覆盖了。在
CommunityHospital但是你可以打电话给super.operate()。 -
在
CommunityHospital类中操作的方法中使用super.operate()。CommunityHospital类覆盖了该方法,因此没有其他方法,因为在一个类中不能有两个具有相同签名的方法。 -
@i_am_zero 它不必是第一行。 (您可能会将它与在构造函数中使用
super()混淆,它必须是第一个。) -
真的不确定你想要实现什么,但你可以创建
StreetHospital的另一个子类,而无需自己实现operate方法;例如PrivateHospital extends StreetHospital,然后在新类的对象上调用operate。 -
@ajb 是的 :)
标签: java class inheritance abstract core