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,?好郁闷
最后两个结果,是因为向下类型转换,这个我还是懂的
解决方案 »
- 如何将Document对象转成HashMap呢?
- 跪求 java2核心技术 第八卷 中文 完整版 pdf
- 需要求反函数的类怎么写?
- paint(Graphics g, JComponent c)方法中参数C如何使用?
- Swing中JToolBar的tooltip问题
- JDK去哪里找的API
- System.in,System.out,System.err既然是final static的,为什么还有setIn(),setOut(),setErr()呢?
- 位图(即像素图)内的像素最大能放大到多大?
- 如何从数据库读取并显示图片?????
- 奇怪的问题!!急!
- 庆祝下,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。