比如父类中的int i=0;在他的子类中将int i=1;测试不可行;那么请问如果想重写的话要怎么办?
5 回答
已采纳
乔小欠儿
TA贡献18条经验 获得超15个赞
子类只可以重写父类的方法,但不可以重写父类的变量。但子类可以通过super调用到父类里的public和protected
的变量。
重写父类的变量也没什么意义啊,你子类要用什么变量自己定义自己使用就好了。
慕男婶
TA贡献98条经验 获得超73个赞
方法是动态绑定(即编译期不确定,运行期才确定)的,也就是说不是和类型绑定在一起的,运行时,对象是谁就调用谁的方法(对象是子类的对象,那么就调用子类重写后的方法,是父类,就调用父类的方法。);
而属性是和类型绑定在一起的,是静态绑定(即编译期已经定了。
Person p = new Student();
例如上述写法
Person是父类型,Student是子类型,
假如父类型和子类型里都有 int i 这个属性的话,
使用 p.i 将访问父类型的属性i ,而不是子类型的 i 。。
从这点儿上来说,属性是不能重写的,即使重写也没有意义啊。。
添加回答
举报
0/150
提交
取消