首页 > 编程知识 正文

java类重载,Java中重载

时间:2023-05-03 17:55:09 阅读:158083 作者:4489

子类中的变量名称与父类的变量名称相同,无论类型是否匹配,子类中的变量名称都不能直接从变量名称访问。

(我个人认为这是个不好的设计。 对于代码的可读性和可维护性非常不友好。 编译器应该直接报告错误,并禁止重载此类同名变量。)

定义父类:

package com.xxx.test.inherit; publicclasstestparent { public intvar=1; protected void doTest () system.out.println (intestparent 33603360 dotest ),var=' var ); }

定义子类:

package com.xxx.test.inherit; publicclasstestchildextendstestparent { protectedfloatvar=1.2f; public void doTest () system.out.println (intestchild 3360: dotest ),var=' var ); } publicstaticvoidmain (string [ ] args ) {TestParent t=new TestChild ); t.doTest (; system.out.println(var='t.var ); }

执行结果

in TestChild:doTest (,var=1.2var=1

说明

请注意,子类的成员函数doTest可以访问子类的var (浮动类型)。

打印到system.out.println('var='t.var )的结果为1。 为什么会这样呢? 这是因为它引用了父类中的变量。 其理由是t被声明了父类的TestParent。 实际上是子类的实例,但java变量绑定在编译时采用静态绑定,如果编译器在编译时知道t是父类,则绑定父类的var。 相比之下,所有绑定了函数的java都使用动态绑定。 这是因为t.doTest () (父类的doTest ) )没有绑定。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。