关于Java多态向上转型和向下转型

   我想知道为什么System.out.println(b.count);输出来为什么是10 是因为编译类型是Base父类所有查到属性是count = 10;吗
   b.display();=20是因为运行类型Sub所以使用了子类Sub的成员方法吗 所以编译类型是引用属性 运行类型是调用方法吗
   测试类      
   Base s = new Sub();
    System.out.println(s.count);
    s.display();
    Base b = s;
    System.out.println(b == s); 
    System.out.println(b.count);
    b.display();

父类和子类
public class Base {
int count = 10;
public void display(){
System.out.println(this.count);
}
}
class Sub extends Base{
int count = 20;

public void display() {
    System.out.println(this.count);
}

}

这里包含的知识点比较多,要搞清楚覆盖隐藏的区别。