class test_parent {
int x = 5;
int y = 10;
void set_value(int a, int b) {
x = a;
y = b;
}
int get_1() {
System.out.println("this.x=" + this.x);
System.out.println("this.y=" + this.y);
return this.x + this.y;
}
int get_2() {
return x - y;
}
}
class test_4 extends test_parent {
int y;
test_4(int a) {
y = a;
System.out.println("y=" + y);
}
void set_value(int a, int b){// 重写
System.out.println("a=" + a);
System.out.println("b=" + b);
x = a;
y = b;
}
int get_2(){// 重写
return y;
}
}
class JoinDemo {
public static void main(String[] args) {
//子类继承父类,在实例化子类对象时加载的顺序是先加载父类再加载子类
//这一步父类的x,y都被显示赋值了
//子类的y被赋值为1
test_4 a1 = new test_4(1);
//get_1()中的this引用的是父类当前的引用
int x = a1.get_1();
//所以这步得结果是15
System.out.println("x=" + x);
//子类继承父类,在实例化子类对象时加载的顺序是先加载父类再加载子类
//这一步父类的x,y都被显示赋值了
//子类的y被赋值为-1
test_4 a2 = new test_4(-1);
//由于方法名相同子类重写了父类的方法,这一步调用的是子类的set_value方法
//子类的y被赋值围5
//子类没有x,所以将父类的x也赋值为5
a2.set_value(5, 5);
//由于方法名相同子类重写了父类的方法,这一步调用的是子类的get_2方法
//当前子类的y值是5
int z = a2.get_2();
//所以这步打印出的是y的值,是5
System.out.println("z=" + z);
}
} |