关于upcasting,高手高手高高手进,谢谢!
class SuperClass{
int a;
public SuperClass(){a=12;System.out.println("1"+a);}
void test(){System.out.println("this is the super!");}
}
class SubClass extends SuperClass{
int a;
public SubClass(){a=13;System.out.println("2"+a);}
void test(){System.out.println("This is the subclass");}
}
public class Test{
public static void main(String args[]){
SuperClass temp = new SubClass();
temp.test();
System.out.println(temp.a);}
}
这段代码有两个问题想请教一下:
一、为什么System.out.println(temp.a);这句输出的是12?temp不是一个指向SubClass的SuperClass类型的句柄马?如果这么理解不是应该输出的是13马?temp.test();输出的不就是SubClass里的方法吗?
二、如果SuperClass中test,改写成private void test() eclispe会抱错,又没有调用SuperClass中的test方法,为什么会抱错呢?谢谢大家拉!