考试一题不太清楚,谁能解答一下谢谢了关于java强制类型转换的
值为bar的第二个FOO是谁的成员变量?当然不是s的成员变量。注意它是被声明为静态的,所以它是属于Sub这个class的变量。你可以把Base和Sub这两个class也看成是两个对象,就和b与s一样。所以现在总共是4个对象。其中Base和Sub这两个对象下面有变量FOO。然后再看最后一行输出语句,((Base) s).FOO的意思是,对于对象s,强制转换为Base类型,取其变量FOO。因此它取的是Base这个类下面的FOO,值是foo。所以选D。
■网友
当父类与子类拥有相同名字的属性(不管是不是静态)时
new一个子类对象,实际上是同时拥有2个属性的。究竟访问的是子类还是父类的,由引用的类型决定(而不是对象的实际类型)
当父类与子类拥有相同名字的方法(即子类override了父类的方法)时
【考试一题不太清楚,谁能解答一下谢谢了关于java强制类型转换的】 情况正好想法,调用父类还是子类的方法由对象的实际类型决定。
■网友
解答此题需要理解下面知识点:
父类引用指向子类对象:所能看到的只是父类那部分属性和方法内存图如下:
部分代码内存图关键代码解析:System.out.println(Base.Foo);Foo是static的,所以Base.Foo访问的是Base类自己的属性,输出:fooSystem.out.println(b.Foo);b是Base对象的引用,访问到的也是它自己的属性,输出:foo
其他两条语句同理。System.out.println(((Base) s).Foo); 把Sub对象的地址赋给Base类型的变量s,此时变量s所能看得到的只是Base那部分属性和方法。所以输出Base类的属性:foo
推荐阅读
- 江苏高考■江苏省发布《2021年普通高校招生考试安排和录取工作实施方案》
- 考试|吉林省2021年艺术类省统考时间公布!
- 捷径|学会这套方法,考试高分不难高考历史复习有“捷径”
- 马铃薯|每日一题 | 距离2021年高考还有188天!
- 全球|2021年河南公务员考试时政热点:12月1日国内外时事政治汇总
- 学年|江苏省扬州市2020-2021学年高三上学期期中考试
- 科目三|科目三挂科特别多的三个地方,还没考试的学员,考试前先搞明白!
- |身份证即将到期影响考试 民警帮少数民族学生解难题
- 美术|2021年湖南省普通高校招生美术类专业全省统一考试温馨提示
- 考试|艺术类统考在即!考生要注意新变化!
