首页 > 解决方案 > 可以隐藏私有方法吗?

问题描述

我已经在网上阅读了几个关于是否可以覆盖私有方法的相互冲突的来源。那么这个例子到底发生了什么?方法移动被隐藏了吗?

class Animal {
   private void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {
   public static void main(String args[]) {
      Dog b = new Dog();   // Dog reference and Dog object
      b.move();   // runs the method in Dog class
   }
}

https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html说它在技术上不是压倒一切的,所以这叫什么,会有任何意外行为吗?

标签: javainheritanceaccess-modifiers

解决方案


你所做的并不是压倒一切的。如果您想确认这一点,只需将@Overridebeforepublic void move()放入类中Dog,您将看到编译错误。

注意:方法private总是隐藏在类中。没有办法让它在课堂之外访问。


推荐阅读