当一个类继承于另一个类,用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。
当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。
package my;
/**
* 当一个类继承于另一个类,用子类的对象调用方法时,会首先在子类中查找,如果子类中没有改方法,再到父类中查找。
*
* 当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。 如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找。
*/
class A {
int x = 6;
private int y = 2;
public A() {
}
int getz() {
int z;
z = x / y;
return z;
}
void show() {
System.out.println("x=" + x);
System.out.println("y=" + y);
System.out.println("z=" + getz());
}
}
class B extends A {
int x = 3, y = 5, z;
public B() {
super();
}
int getz() {
z = x + y;
return z;
}
}
class C extends A {
int x = 3, y = 5, z;
public C(int flag) {
super();
super.x = flag;
}
int getz() {
z = x + y;
return z;
}
}
public class Temp {
public static void main(String[] args) {
// A num1 = new A(10);
B num2 = new B();
// num1.show();
num2.show();
//通过在子类加入有参构造,修改父类的参数,达到传参的改变
C num3 = new C(5);
num3.show();
}
}
代码执行结果:
x=6
y=2
z=8
x=5
y=2
z=8