java中什么叫覆盖Override?



马克-to-win:方法的覆盖(Override)是指子类重写从父类继承来的一个同名方法(参数、返回值也同)。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。



例1.5.1

class AAAMark_to_win {
    double f(double x, double y) {
        return x * y;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double yMark_to_win)
/*注意这里的返回值必须为double,如返回int值,
我试过报错,因为sun公司不出这个语法,他没法办,
到时obj.f(4,6)不知道调用基类还是本类的方法。
*/
    {
        return x + yMark_to_win;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
    }
}

result is:
24.0
10.0




例1.5.2---本章源码 

class AAAMark_to_win {
    double f(double x, double yMark_to_win) {
        return x * yMark_to_win;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double y) {
        return x + y;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
/* 基类指针指向子类或说派生类效果就像子类指针指是一样的,为什么?马克-to-win:因为new BBB();时,BBB的属性的内存空间也被开辟了。只是语法上允许“基类指针指向派生类”
*/     
        AAAMark_to_win obj1 = new BBB();
        System.out.println(obj1.f(4, 6));
    }

}

结果是: 

24.0
10.0
10.0




例1.5.2.a:本例编译报错:overide时, 子类的方法的visibility不能更小,起码要大或相等。
class AAAMark_to_win {
    public double f(double x, double yMark_to_win) {
        return x * yMark_to_win;
    }
}

class BBB extends AAAMark_to_win {
    double f(double x, double y) {
        return x + y;
    }
}

public class Test {
    public static void main(String args[]) {
        AAAMark_to_win a = new AAAMark_to_win();
        System.out.println(a.f(4, 6));
        BBB obj = new BBB();
        System.out.println(obj.f(4, 6));
/* 基类指针指向子类或说派生类效果就像子类指针指是一样的,为什么?马克-to-win:因为new BBB();时,BBB的属性的内存空间也被开辟了。只是语法上允许“基类指针指向派生类”
*/    
        AAAMark_to_win obj1 = new BBB();
        System.out.println(obj1.f(4, 6));
    }

}