Java覆盖私有函数不显示多态行为

Anm*_*yal 2 java polymorphism private

public class Shape
{

final private void print() 
{
    System.out.println("in class Shape");
}

  public static void main(String[] args)
  {

    Shape shape=new Rectangle();
    shape.print();
    //calling shape class function 
    //giving output in class shape


  }
Run Code Online (Sandbox Code Playgroud)

}

 public class Rectangle extends Shape
 {
    public void print() 
    {
    System.out.println("in class Rectangle");
    //super.print();

    }
  }
Run Code Online (Sandbox Code Playgroud)

问:为什么私有函数不显示多态行为?而我们仍然压倒最终方法?它的调用基类功能为什么?

Eri*_*rik 5

私人功能从其子女身上看不到也无法召唤; 因此这些是两个完全不同的功能.从子类的角度来看,没有什么可以覆盖,因为它不知道父类甚至一个print()函数.

  • 此外,父类中的`print`函数被声明为`final`,这明确暗示即使它不是私有的,它也不能被覆盖. (2认同)