我有以下示例代码解释示例多态性概念 - 覆盖
超级类 { 公共整数 = 1; 公共字符超文本='a'; 公共字符串 getColor() { 返回“红色”; } } 类 Sub 扩展 Super { 公共整数 = 2; public char subText='b'; 公共字符串 getColor() { 返回“蓝色”; } } 公开课 Sample2 { 公共静态无效主要(字符串 [] 参数) { 超级超级子 = 新子(); System.out.println(supersub.getColor() + supersub.number + supersub.superText ); } }
输出为蓝色 1。
问题一:
派生类 getColor() 中的方法被覆盖,并显示超类的字段。
有人可以解释为什么不调用派生类中的数字字段吗?即,输出为 blue2
问题 2: *关于内存分配*
对于以下对象实例化,
子子对象 = 新子();字段“数字”的内存在堆中分配,数字变量的地址分配给对象引用 subobj。
考虑以下情况,
超级超级子 = 新子();
(a)这里创建了派生类 'Sub' 中的变量、'number and subText' 的内存,并将变量的地址放在 supersub 对象中
当我访问时,supersub.subText 我得到 subText 无法解析的错误。
所以,请解释上述点(a) ,即派生类变量的内存分配
谢谢,电子人