<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在java的继承问题中,当子类与父类有相同的属性,子类重写了父类的某个方法,那么在创建实例的过程中,方法是如何调用及属性值是什么样的呢?</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">package test2;
class father{
int i=0;
public void m1(){
System.out.println("father1:"+i);
}
public void m2(){
System.out.println("father2:"+i);
}
}
class son extends father{
int i=1;
public void m2(){
System.out.println("son:"+i);
}
}
public class ExtendsFunction {
public static void main(String[] args){
father s=new father();
s.m1();
s.m2();
System.out.println(s.i);
/*报错,不合法
son s0=(son)s;
s0.m1();
s0.m2();
System.out.println(s0.i);*/
father s1=new son();
s1.m1();
s1.m2();
System.out.println(s1.i);
son s2=(son)s1;
s2.m1();
s2.m2();
System.out.println(s2.i);
son s3=new son();
s3.m1();
s3.m2();
System.out.println(s3.i);
father s4=(father)s3;
s4.m1();s4.m2();
System.out.println(s4.i);
}
}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">结果展示如下:
father1:0
father2:0
0
father1:0
son:1
0
father1:0
son:1
1
father1:0
son:1
1
father1:0
son:1
0
总结:方法的调用与具体的实例有关,与引用(实例名)类型无关,且方法中使用的属性值为该方法所处的类中的属性值;属性的值与具体的引用类型有关,会展示相应类型中的值,即根据父类或子类来展示相应的值。如有错误,请指正。