程序示例:
/*
继承与成员方法的关系:
1、当子类中的方法与父类中的方法不同的名字的时候
根据调用方法的名字不同,调用的方法也不同
2、当子类中的方法与父类中的方法名字一样的时候
1)先在本类中查找,看看有没有方法,如果有就直接调用
2)如果本类中没有对应名字的方法,就去父类中找
3)如果在父类中也没有找到对应的方法,报错
*/
//----------当子类中的方法与父类中的方法不同的名字的时候----------
class Father2{
public void fun1(){
System.out.println("这是父类的fun1方法");
}
}
class Son2 extends Father2{
public void fun2(){
System.out.println("这是子类中的fun2方法");
}
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Son2 son2 = new Son2();
//根据调用方法的名字不同,调用的方法也不同
son2.fun2();
}
}
//----------当子类中的方法与父类中的方法名字相同的时候----------
//1)先在本类中查找,看看有没有方法,如果有就直接调用
class Father2{
public void fun1(){
System.out.println("这是父类的fun1方法");
}
}
class Son2 extends Father2{
public void fun2(){
System.out.println("这是子类中的fun2方法");
}
public void fun1(){
System.out.println("这是子类中fun1方法");
}
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Son2 son2 = new Son2();
son2.fun2();
//访问的是子类中的fun1方法
son2.fun1();
}
}
//2)如果本类中没有对应名字的方法,就去父类中找
class Father2{
public void fun1(){
System.out.println("这是父类的fun1方法");
}
}
class Son2 extends Father2{
public void fun2(){
System.out.println("这是子类中的fun2方法");
}
// 把子类中的fun1方法注释掉
// public void fun1(){
// System.out.println("这是子类中fun1方法");
// }
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Son2 son2 = new Son2();
son2.fun2();
//访问的是父类中的fun1方法
son2.fun1();
}
}
//3)如果在父类中也没有找到对应的方法,报错
class Father2{
// 把父类中的fun1方法注释掉
// public void fun1(){
// System.out.println("这是父类的fun1方法");
// }
}
class Son2 extends Father2{
public void fun2(){
System.out.println("这是子类中的fun2方法");
}
// 把子类中的fun1方法注释掉
// public void fun1(){
// System.out.println("这是子类中fun1方法");
// }
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Son2 son2 = new Son2();
son2.fun2();
//报错,找不到fun1方法
son2.fun1();
}
}