class Super{
int index=50;
public void printVal(){
System.out.println("Super");
}
}
class Sub extends Super {
int index=2;
public void printVal() {
System.out.println("Sub");
}
}public class ExampleSub{
public static void main(String args[]){
Sub sub = new Sub();
System.out.print(sub.index + ", ");
sub.printVal();
Super sup = sub; //上转型
System.out.print(sup.index + ", ");
sup.printVal();
}
}
//输出 2,Sub
// 50,Sub
第二行 为什么输出的是50,其他的输出可以理解.
int index=50;
public void printVal(){
System.out.println("Super");
}
}
class Sub extends Super {
int index=2;
public void printVal() {
System.out.println("Sub");
}
}public class ExampleSub{
public static void main(String args[]){
Sub sub = new Sub();
System.out.print(sub.index + ", ");
sub.printVal();
Super sup = sub; //上转型
System.out.print(sup.index + ", ");
sup.printVal();
}
}
//输出 2,Sub
// 50,Sub
第二行 为什么输出的是50,其他的输出可以理解.
解决方案 »
- JTextPane删除图标
- 这个是什么时间格式2008-09-25T09:30:47.0Z ?
- 大家帮我看看我现在自学JAVA的计划有什么不周道,真心回答者给分啦!50
- java中,读取数据后怎么输出为表格,还有排序的?
- 请问如何判断操作系统中文件是否正在使用
- 求助,java应用程序(*exe)文件怎么能看到他的源代码
- 路过的大侠都来帮忙看看,java加密算法调用
- 对于java,谁能告诉我,初学者应该如何入手?
- java输入数组后最大值错误,请帮忙看看,谢谢
- 怎么解决getOutputStream() has already been called for this response
- 高手,高手来解释嵌套类.
- 请问过滤器适用于消除哪些情况的乱码?
虽然这个sup是由sub转上去的,不过类型转为Super了,调用index就是调用Super的index。
虽然这个sup是由sub转上去的,不过类型转为Super了,调用index就是调用Super的index。
用netbeans跟踪一下就知道了,如下:
变量 值
sub
index 2
继承的
index 50
第一个取得是sub内部的 index;
第二个取得是super内部的 index;如果你将sub内部的index 删除掉!~
那么它们都将指向同一个index;
给出下面一个例子程序自己实验一下!可能比别人说很多要明白的深!~public class Test1 { static int index = 2;
public static void main(String []args) {
int index = 50;
System.out.println(index);
print();
}
public static void print() {
System.out.println(index);
}
}
用netbeans跟踪一下就知道了,如下:
变量 值
sub
index 2
继承的
index 50 他说属性不能重写.----------------------------------------------------------
那sub 里面的 index=2 ; 不是对super里面的 index=50; 的重写吗?
否则怎么能算学java 呢?
你取得的是Super 里面的index ; 当然=50了!~
你究竟是2 不明白 还是50不明白啊?
你要记住: 子可以拿父亲的; 父亲不能拿儿子的还有一点要区分的就是: 方法是放在dataSegment中;
index 是什么?. 是一个变量; 它分配在 stack中空间 ;
变量是什么?. 是程序一执行完就消失的; 它不是存在的!~我想你不明白多态的机制:同名的不同方法共存
你也不明白继承机制: 传递;父类把他的index = 50 传递到了Sub中; 可是你调用的是Super sup = sub; 是个Super类型的Sub对象!~ 这个sup取得它父亲的 index = 50 !
有什么问题吗????/ 你告诉我!!!!!!!!