Java 这里的遗产怎么了?

Java 这里的遗产怎么了?,java,inheritance,Java,Inheritance,这是我的密码 class Animal{ public int numOf=3; } class Dog extends Animal{ public int numOf=4; } class TestCase{ public static void main(String[] args){ Animal a = new Dog(); Dog d = new Dog(); System.out.println(a.numOf); Sy

这是我的密码

class Animal{
  public int numOf=3;
}

class Dog extends Animal{
  public int numOf=4;
}
class TestCase{
  public static void main(String[] args){
      Animal a = new Dog();
      Dog d = new Dog();
      System.out.println(a.numOf);
      System.out.println(d.numOf);
  }
}

当我执行
a.numOf
时,它是否应该是4,就像在方法中一样?

多态性不适用于字段

字段根据其所访问的变量的声明类型进行解析

System.out.println(a.numOf); // refers to A's, since a's declared type is A
System.out.println(d.numOf); // refers to D's, since d's declared type is D

这里有一个例子。

您不重写字段,只重写方法。换句话说,您不重写状态,只重写行为。@RohitJain为什么不重写字段?还是多态性?索蒂里奥斯,我们得谈谈你在这些java问题上把我打得落花流水@RichardJPLeGuen LOL.聊天窗口已打开。去做吧;-)@RichardJPLeGuen的殴打将持续到我满意为止(和/或在工作中有事可做)。@SotiriosDelimanolis为什么不能推翻fields?为什么字段不是多态的?