關(guān)于子類中方法重寫的問題
如果父類中的抽象方法是無參的,那么子類中重寫的方法是不是必須也是無參的?
比如要算矩形的周長需要兩個參數(shù)l和h,面積需要兩個參數(shù)l和h,而圓形周長和面積只需要一個參數(shù)r。
這個時候需要怎么定義抽象方法?是不是需要再定義兩次抽象方法為兩個參數(shù)的和一個參數(shù)的,并且重寫的方法中參數(shù)還必須和抽象方法中一樣?
這是抽象父類Shape:
public?abstract?class?Shape?{ public?abstract?void?getGirth(int?a,int?b); public?abstract?void?getArea(int?a,int?b); public?abstract?void?getGirth(int?a); public?abstract?void?getArea(int?a); }
這是子類Rectangle:
public?class?Rectangle?extends?Shape?{ @Override public?void?getGirth(int?a,int?b)?{ //?TODO?Auto-generated?method?stub System.out.println("矩形的面積為:"+(2*a+2*b)); } @Override public?void?getArea(int?a,int?b)?{ //?TODO?Auto-generated?method?stub System.out.println("矩形的面積為:"+a*b); } @Override public?void?getGirth(int?a)?{ //?TODO?Auto-generated?method?stub } @Override public?void?getArea(int?a)?{ //?TODO?Auto-generated?method?stub }
這是子類Circle:
public?class?Circle?extends?Shape?{ @Override public?void?getGirth(int?a)?{ //?TODO?Auto-generated?method?stub System.out.println("圓形的周長為:"+(2*3.14*a)); } @Override public?void?getArea(int?a)?{ //?TODO?Auto-generated?method?stub System.out.println("圓形的面積為:"+3.14*a*a); } @Override public?void?getGirth(int?a,?int?b)?{ //?TODO?Auto-generated?method?stub } @Override public?void?getArea(int?a,?int?b)?{ //?TODO?Auto-generated?method?stub }
測試類Test:
public?class?Test?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub Shape?a?=?new?Rectangle(); Shape?b?=?new?Circle(); a.getGirth(3,?4); a.getArea(3,?4); b.getGirth(3); b.getArea(3); }
運行結(jié)果:
矩形的面積為:14 矩形的面積為:12 圓形的周長為:18.84 圓形的面積為:28.259999999999998
想問下有沒有更簡便點的辦法?
2015-02-12
這是我寫的。。。。
2015-07-24
2015-02-12
可以使用可變長參數(shù)試試