日期:2014-05-20 浏览次数:20792 次
public class Test { public static void main(String[] args) { /** * 首先要明白子类继承父类的所有属性,但private修饰的不可以使用 * 这里是用默认修饰,所以也能使用 * 构造方法执行的顺序是从顶层父类一直向下执行的本类 */ /* * 这里当创建Sub对象时,会首先执行父类Base的构造方法,这时x被赋值为5, * 接着执行Sub自己的构造方法,这时x被赋值为9 * (但当在Sub类中定义一个int x;时,赋值会采用就近原则,Sub的构造方法就是给自己类的x赋值, * 因此调用show方法,输出的x值还是父类给x的值,即5) */ Sub sub = new Sub(); // 这时sub调用show方法时,x就是9了 sub.show(); //这里创建的是父类的对象,所以只执行父类的构造方法,x被赋值为5 Base base = new Base(); //所以这里输出为5 base.show(); } } class Base{ int x; public Base(){ x=5; } public void show(){ System.out.println(x); } } class Sub extends Base{ public Sub(){ x = 9; } }