class A{
int z=3;
void map(){
}
}
class B extends A{
int z=4;
void map(){
System.out.println("z="+this.z);
}
}
public class text{
public static void main(String args[]){
A a=new B();
a.map();
}
} 结果为z=4
而这个代码
class A{
int z=3;
void map(){
}
}
class B extends A{
int z=4;
void map(A x){
System.out.println("z="+x.z);
}
}
public class text{
public static void main(String args[]){
B a=new B();
a.map(a);
}
} 这个代码中x接受了对象a所以x.z为a.z按道理值是4的啊,可是却是3啊!?
int z=3;
void map(){
}
}
class B extends A{
int z=4;
void map(){
System.out.println("z="+this.z);
}
}
public class text{
public static void main(String args[]){
A a=new B();
a.map();
}
} 结果为z=4
而这个代码
class A{
int z=3;
void map(){
}
}
class B extends A{
int z=4;
void map(A x){
System.out.println("z="+x.z);
}
}
public class text{
public static void main(String args[]){
B a=new B();
a.map(a);
}
} 这个代码中x接受了对象a所以x.z为a.z按道理值是4的啊,可是却是3啊!?
、第二个 还是刚刚那个问题,map(A x),x是A的对象,x.z当然是A类中的z变量了啊。还是那句话,属性没有覆写``````a.z = 3 , b.z = 4 ;
楼上均正确,this.z调用的是本类中的z,第二种情况,map方法中,参数x是A的对象,x.z就是A类中的z变量如果你在第一种情况下的main方法中,加一句
System.out.println(a.z);你会发现这一句输出的是3,因为a声明的类型是A
void map(A x){ //A 形参X 你已指明了类型 输出的结果当然是父类中的属性值咯
System.out.println("z="+x.z); //x.z = 父类中指定的值是 达内 的 顶下 O(∩_∩)O哈哈~