class Parent2 {
int a = 1; public void test01() {
System.out.println(a);
}
}class Sub2 extends Parent2 {
int a = 2;
int b = 4;
public void test01() {
System.out.println(a);
}
}public class Example {
public static void main(String[] args) {
Parent2 sub2 = new Sub2();
Sub2 sub3 = (Sub2) sub2;
System.out.println(sub2.a);
sub2.test01();
System.out.println(sub3.a);
sub3.test01();
}
}
最后结果是
1
2
2
2
Parent2 sub2 = new Sub2(); 这不是new 谁,就拥有谁的属性吗?怎么sub2.a是1?而且调用方法,结果又变成了2,?好郁闷
最后两个结果,是因为向下类型转换,这个我还是懂的
int a = 1; public void test01() {
System.out.println(a);
}
}class Sub2 extends Parent2 {
int a = 2;
int b = 4;
public void test01() {
System.out.println(a);
}
}public class Example {
public static void main(String[] args) {
Parent2 sub2 = new Sub2();
Sub2 sub3 = (Sub2) sub2;
System.out.println(sub2.a);
sub2.test01();
System.out.println(sub3.a);
sub3.test01();
}
}
最后结果是
1
2
2
2
Parent2 sub2 = new Sub2(); 这不是new 谁,就拥有谁的属性吗?怎么sub2.a是1?而且调用方法,结果又变成了2,?好郁闷
最后两个结果,是因为向下类型转换,这个我还是懂的
解决方案 »
- 请教Java中的数组排序是那个语法?
- 怎么用正则写出不以"ART/"开头的字符串
- showInputDialog出错,怎么也找不出错误,汗!
- 请问大家一个replaceALL()函数的问题
- 如何制作多文档界面?
- 日期插入access数据库,为什么会出错?怎么解决?大虾帮帮忙。。。。。。(在线等。。。)
- 如何用java调用ie核心,开发浏览器,或者直接开发?
- 对于 java语言一窍不通,如何学习
- 请教高手关于JTree图标的问题
- Python3编码问题
- 庆祝下,csdn空间里面的分组一个很明显的bug终于解决了,这个bug至少存在一周多了。
- 输入一个数字之后,怎么把这个数字拆分成一个字一个字的?
sub2.test01();接着调用方法,楼主的程序里面,父类和子类中都有这个方法,也就是说,子类覆盖了中的方法。打个比方,老爸和儿子都是老师,老爸是教数学的,也就是Parent2中的test01()方法调用Parent2中的a,
而儿子是教计算机的,也就是子类Sub2中的也是test01()方法,但调用的是Sub2中的a,如果子类中不具备这个,才到父类中去找。所以,sub2.test01()的值为Sub2中的a也就是2.
希望对楼主有用!
Parent2 sub2 = new Sub2();
Sub2 sub3 = (Sub2) sub2;
System.out.println(sub2.a);
sub2变量的类型是Parent2,所以sub2.a是1。
sub3变量的类型是Sub2,所以sub3.a是2。但是方法是多态的,实际创建的对象类型是Sub2,所以输出都是2。