我有以下示例代码解释示例多态性概念 - 覆盖
超级类
{
公共整数 = 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) ,即派生类变量的内存分配
谢谢,电子人