日期:2014-05-20 浏览次数:21010 次
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;
}
}