父类引用指向子类对象之属性

xiaoxiao2021-02-28  30

class B{ int i =1; int k =5656; public void add(){ } } class C extends B{ int i =5; int j; public C(){ super.i = 7; } public void add(){ super.i = 8888; } } public class A { public static void print(B b){ System.out.println(b.i); } public static void main(String[] args) { B b = new C(); System.out.println(b.i); //7 创建C对象时,构造器改变了B的i的属性值 //System.out.println(b.j); 调不到子类的属性 print(b);//7 C c = new C(); System.out.println(c.i);//5 子类和父类的i不是一个,这个不能重写 print(c);//7 向上转型后,是B的i了 } }

一般而言,Father f = new Child() 创建对象时,会先创建父类对象在创建子类对象,空间明显比只创建父类引用的f要大,这个时候以f为准,多余的信息存在,但是f并不能指向 这种形式记住一句话:属性静态绑定,方法动态绑定。

转载请注明原文地址: https://www.6miu.com/read-1700194.html

最新回复(0)