Java中能否在子类重写父类方法时保留父类输出并追加自定义内容?
解决方案:在子类重写方法中调用父类方法
当然可以实现你想要的效果!你当前的子类代码在重写display()方法时完全覆盖了父类的实现,所以只会输出子类自己的内容。要让子类调用方法时同时输出父类的内容,只需要在子类的重写方法里通过super关键字调用父类的display()方法即可。
修改后的subB类代码
public class subB extends superA { @Override public void display() { // 先执行父类的display方法,输出父类内容 super.display(); // 再输出子类自定义的内容 System.out.println("In sub class subB"); } }
原理说明
super关键字用于在子类中访问父类的成员(包括方法和属性),调用super.display()会直接执行父类superA中的display()方法,输出第一行文本。- 之后再执行子类自己的
System.out.println语句,就能实现先输出父类内容、再追加子类内容的效果。
测试效果
当你创建subB的对象并调用display()方法时,控制台会输出:
In super class superA In sub class subB
而subC类可以保持原有代码不变,它的对象调用display()时依然只会输出自己的内容,不会受影响。
内容的提问来源于stack exchange,提问作者rushabhvg
相关产品推荐
相关产品推荐

