您的位置:首页 > 编程语言 > Java开发

Java程序初始化过程中方法覆盖问题

2007-10-04 20:02 513 查看
代码如下:




/**//*


* Test.java


*


* Created on 2007-10-4, 19:32:43


*


* To change this template, choose Tools | Templates


* and open the template in the editor.


*/






/** *//**


*


* @author Jeffery


*/






class Base ...{




int i;






Base() ...{


add(1);


System.out.println("Base" + this.i);


}






void add(int i) ...{


this.i += i;


System.out.println("Base add i" + this.i);


}


}






class MyBase extends Base ...{






MyBase() ...{


add(2);


System.out.println("Mybase" + this.i);


}






void add(int i) ...{


this.i += i * 2;


System.out.println("Mybase add i" + this.i);


}


}






public class Test ...{






public static void main(String[] args) ...{


go(new MyBase());


}






static void go(Base b) ...{


b.add(8);


}


}

最后输出i的值为22

分析:按照之前一篇文章总结在主函数中,首先执行new MyBase(),在这个过程中,子类会首先调用父类的构造函数Base(),但Base()函数执行add()方法时特别需要注意, 这个add方法由于是在新建MyBase对象时调用的,所以将会首先查找MyBase类中是否有此方法。所以Base函数中的add(1)实际上是执行的乘2的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐