首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java中继承的一点有关问题

2012-03-26 
java中继承的一点问题package package1publicclass A {public int i1public void printI() {System.out

java中继承的一点问题
package package1;
public class A {  
  public int i=1;  
  public void printI() {  
  System.out.println("i="+i);  
  }  


package package1;

public class B extends A {  
public int i=2;  
public static void main(String[] args) {  
B b=new B();  
b.printI();  

   

结果输出i=1;
十分不解啊

[解决办法]
首先编译以后会有A.class和B.class文件,A的属性i存在于A.class中,B的属性i存在于B.class中,调用b.printI(); 的时候,现在B.class中查找有没有printI方法,结果发现没有,就追源到父类,于是在A.class中找到printI,然后调用该方法,然后该方法的i是A.class的i而不是b.class的i,因为父类本身没法知道子类也会有一个同名的属性,所以输出的就是A.class的i

热点排行