class Asuper{
String s="class:Asuper";
public void test(){
System.out.println("我是父类的方法");
}
}class Bsub extends Asuper{
String s="class:Bsub";
public void test(){
System.out.println("我是子类的方法");
}}public class TestExtends{
public static void main(String[] args){
Asuper a1,a2;
Bsub b=new Bsub();
a1=b;
a2=b;
System.out.println(b.s);
System.out.println(a1.s);
System.out.println(a2.s);
b.test();
a1.test();
a2.test();}
}输出结果如下:class:Bsuper
class:Asuper
class:Asuper
我是子类的方法
我是子类的方法
我是子类的方法问题:既然a1=b; a2=b, test()方法子类重了父类的方法,输出的结果都为我是子类的方法,这个可以理解,但是为什么a1.s和a2.s的输出结果都还是父类中的 class:Asuper ,实在没明白!求解!
String s="class:Asuper";
public void test(){
System.out.println("我是父类的方法");
}
}class Bsub extends Asuper{
String s="class:Bsub";
public void test(){
System.out.println("我是子类的方法");
}}public class TestExtends{
public static void main(String[] args){
Asuper a1,a2;
Bsub b=new Bsub();
a1=b;
a2=b;
System.out.println(b.s);
System.out.println(a1.s);
System.out.println(a2.s);
b.test();
a1.test();
a2.test();}
}输出结果如下:class:Bsuper
class:Asuper
class:Asuper
我是子类的方法
我是子类的方法
我是子类的方法问题:既然a1=b; a2=b, test()方法子类重了父类的方法,输出的结果都为我是子类的方法,这个可以理解,但是为什么a1.s和a2.s的输出结果都还是父类中的 class:Asuper ,实在没明白!求解!
解决方案 »
- 在看this时遇到问题,希望大家给出解释
- 求助一个文件内容解析的问题
- [求助]关于JComboBox<组合框>如何提取的问题~<----------高手来啊-------->
- 菜鸟请教:学习java需要在系统里安装哪些程序?
- 请叫path和classpath的问题!!!(我是菜鸟)
- 我初学JAVA ,请大家帮我看看这个编译是哪里错了?
- java out of memory heap space 错误
- 我这句有错吗,自己机上能通过,虚拟主机商出现错误,有关存文件不成功,他们的系统是linux,我测试的是windows,是否是目录另有写法?
- 谁能教我在java里加入声音文件
- Java高手,我依然失败,虽然在jbuilder中将Layout 设为 GridBagLayout。。。(pgy)
- 求助,方法报错
- 求一份DOM4J的中文帮助文档,再次谢过了!!!
那么结论,首先,假若变量也搞后期绑定,那也就是说,首先必须判断变量,然后再根据变量所属的对象去判断方法,完成指令,那java的这个运行效率会再降一截。其次,再来说,让java来再次降低效率去实现变量的后期绑定是否有必要?我想,这才是关键。后期绑定的目的是多态,是代码的简洁、可重用性。而这些对于变量来说,你需要少定义变量来实现代码的简洁或者是可重用性吗,意义微乎其微的。所以结论就是上面说的,属性就是早期绑定,这是SUN规定好的,没有道理可言。