public class Father { protected void server(int i){
switch (i){
case 1:
methodone();
break;
case 2:
methodtwo();
break;
case 3:
methodthree();
break;
default:
System.out.println("error");
} } protected void methodthree() {
System.out.println("这是父类的方法三");
} protected void methodtwo() {
System.out.println("这是父类的方法二");
} protected void methodone() {
System.out.println("这是父类的方法一");
}
}
public class Child extends Father { @Override
protected void methodthree() {
System.out.println("这是子类的方法三");
} @Override
protected void methodtwo() {
System.out.println("这是子类的方法二");
} @Override
protected void methodone() {
System.out.println("这是子类的方法一");
} @Override
protected void server(int i) {
super.server(i);
}
}
public class Test_main {
public static void main(String[] args){
Father fa=new Father();
Father ch=new Child();
fa.server(1);
ch.server(2); }
}
在学习servlet的过程中突然对类方法的调用关系犯了糊涂,所谓基础不牢,地动山摇,一个小问题足以搞得我模模糊糊。在类的继承中,子类继承父类的某个方法,若这个方法中含有对父类的另一个方法(如method1,method2,method3)的调用,当子类不重载此方法(如method1,method2,method3)时,编译器会自动调用父类的相应的方法;当子类重载此方法(如method1,method2,method3)时,编译器会自动调用子类重载的方法。
换句话说,子类继承父类方法时只是继承了相应的代码,父类调用子类的实例时会接着调用子类重载的方法,方法没有被子类重载时才会调用父类本来的方法。