/**
* @author lstart
* @desc:
* @create 2022-10-10 19:57
*/
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);
}
}
public class FieldMethodTest {
public static void main(String[] args) {
Sub s = new Sub();
System.out.println(s.count);//20(看创建的对象先在本类找,找不到再去父类,就近原则)
s.display();//20
Base b = s;//多态性 (=表示赋值)
//==:对于引用数据类型来讲,比较的是两个引用数据类型变量的地址值是否相同
System.out.println(b == s);//true (引用类型==判断地址值)
System.out.println(b.count);//10
b.display();//20 这不就是多态的作用吗?(父类的数据类型,new一个子类的对象,调用子类重写的方法)
}
// 1.若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,
// 系统将不可能把父类里的方法转移到子类中:编译看左边,运行看右边
//
// 2.对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量,
// 这个实例变量依然不可能覆盖父类中定义的实例变量:编译运行都看左边
}