申明:转载自牛客网
class Car extends Vehicle{ public static void main (String[] args) { new Car(). run(); } private final void run() { System. out. println ("Car"); }}class Vehicle{ private final void run() { System. out. println("Vehicle"); }}输出结果:Car
分析:
此题的父类方法有private修饰,所以对子类不可见,子类不能覆盖。所以子类方法和父类是两个方法。
扩展:如果父类方法将private改为public 会怎样?
会报错,因为父类方法有final修饰,不能被覆盖。
扩展:
class Shape { private Shape wf; protected Shape() { wf = this; } private int length() { return 0; } private int width() { return 0; } public int getArea() { return wf.length()*wf.width(); } } public class OverridingShape extends Shape { public int length() { return 10; } //@Override 不是覆盖,基类该方法是private,子类不可见 public int width() { return 10; } public static void main(String[] args) { Shape s=new OverridingShape(); System.out.println(s.getArea()); //结果是0而不是100 调用的是父类的方法,然后访问的是父类的private方法 } }
Java继承与方法覆盖
本文通过具体示例探讨了Java中方法的可见性和覆盖规则,分析了当父类方法为private时子类如何处理,以及这如何影响程序的运行结果。
285

被折叠的 条评论
为什么被折叠?



