如上所示代碼示例是方法覆蓋的例子。 這是java實現運行時多態性的方式。 在java中,如果使用超類refernce調用overriden方法,java將根據調用時引用的對象的類型(而不取決於變量的類型)確定執行該方法的哪個版本。 考慮
class Figure{
double dim1;
double dim2;
Figure(double dim1,double dim2){
this.dim1=dim1;
this.dim2=dim2;
}
double area(){
return 0;
}
}
class Rectangle extends Figure{
Rectangle(double dim1,double dim2){
super(dim1,dim2);
}
double area(){
double a;
a=dim1*dim2;
System.out.println("dimensions of rectangle are "+dim1+" "+dim2);
return a;
}
}
class Triangle extends Figure{
Triangle(double dim1,double dim2){
super(dim1,dim2);
}
double area(){
double a=(dim1*dim2)/2;
System.out.println("base & altitude of triangle are "+dim1+" "+dim2);
return a;
}
}
class test{
public static void main(String[] args){
Figure r;
Rectangle b=new Rectangle(10,10);
Triangle c=new Triangle(10,10);
r=b;
System.out.println("area of rectangle fig "+r.area());
r=c;
System.out.println("area of triangle fig "+r.area());
}
}
輸出:矩形的 尺寸10.0 10.0 區域矩形圖100.0 基&高度三角都是10.0三角形的10.0 面積無花果50.0
爲第二qstn:不。簽名意味着獨特。返回類型不是簽名的一部分
這不是重載,看起來更像是重寫。重載意味着你的方法在同一個類(或者子類)中有不同的簽名,就像不同的參數和不同的返回類型。 – 2012-07-19 05:13:21
在我看來,對於像這樣的問題,最好讓你發佈你的最佳答案和他們的辯護,然後再請他人發表他們的答案。 – 2012-07-19 05:18:59
相關:http://stackoverflow.com/questions/1596628/why-dont-languages-allow-overloading-of-methods-by-return-value/1596661 – 2012-07-19 06:27:21