java多态
class Base{
int x = 1;
static int y=2;
int z=3;
int method(){
return x;
}
}
class Subclass extends Base{
int x = 4;
int y=5;
static int z=6;
int method(){
return x;
}
}
public class Test{
public static void main(String[] args){
Base b = new Subclass();
System.out.println(b.x + " " + b.y +" "+ b.z);
}
}
问前先声明一下:估计又要被BS了,如果BS我也可以,但希望大家BS完以后可以留下我要问的问题的回复可以吗?谢谢了
请不要灌水
问1:子类继承父类所有的成员变量和方法(那么,子类方法被继承且可以重写,而成员变量如果是被继承的话,上面的例子,子类的int x=4也是什么意思???没有成员变量也被重写这一说法吧!!!或许这样理解不知道对不对,本来是已经继承了,只不过这里子类又重新定义了一个值给X,但并不是重写)
问2:Base b = new Subclass();这个b已经指向子类对象了,只不过是父类类型的的,但它的实例确实是子类的,为什么b.x是父类里的1呢,虽然这里是b,但它不是指向子类的实例吗???为什么不是4呢
经查GOOGLE,BAIDU得知,这些变量是在编译的时候决定的,
但,即使是编译的时候就决定了,但它们应该是每个对象自己里的变量啊.回到那句话,b不是指向子类的对象吗?