第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關(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

想問下有沒有更簡便點的辦法?

正在回答

3 回答

首先重寫子類的方法必須和被繼承的父類的方法相同
//父類
public?class?Shape?{
public?void?getArea(){
	System.out.println("圖形的面積");
}
public?void?getGirth(){
	System.out.println("圖形的周長");
}
}
//圓形子類
public?class?Circle?extends?Shape?{
	int?r=3;
public?void?getArea(){
	double?area=3.14*r*r;
	System.out.println("圓形的面積"+area);
}
public?void?getGirth(){
	double?girth=2*3.14*r;
	System.out.println("圓形的周長"+girth);
}
}
//方形子類
public?class?Rectangle?extends?Shape?{
	int?a=2;
	int?b=4;
	public?void?getArea(){
		double?area=a*b;
		System.out.println("方形的面積"+area);
	}
	public?void?getGirth(){
		double?girth=2*(a+b);
		System.out.println("圓形的周長"+girth);
	}
}
//測試類
public?class?Initial?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		Circle?circle=?new?Circle();
		circle.getArea();
		circle.getGirth();
		Rectangle?rectangle=?new?Rectangle();
		rectangle.getArea();
		rectangle.getGirth();
	}

}

這是我寫的。。。。

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

MiseryKyo 提問者

非常感謝! 這樣就是直接把子類方法寫成無參的,然后在方法里面定義數(shù)據(jù)。 我一開始想的是有參數(shù)的話,就可以直接輸入?yún)?shù)來計算了。
2015-02-12 回復(fù) 有任何疑惑可以回復(fù)我~
//父類
public?abstract?class?Shape?{
	public?abstract?double?perimeter(double?i,double?j);
	public?abstract?double?Area(double?m,double?n);
}
//子類Circle
public?class?Circle?extends?Shape?{
	@Override
	public?double?perimeter(double?i,?double?j)?{
		//?TODO?Auto-generated?method?stub
		double?p?=?2?*?i?*?j;
		return?p;
	}

	@Override
	public?double?Area(double?m,?double?n)?{
		//?TODO?Auto-generated?method?stub
		double?s?=?m?*?n?*?n;
		return?s;
	}

}
//子類Rectangle
public?class?Rectangle?extends?Shape?{

	@Override
	public?double?perimeter(double?i,double?j)?{
		//?TODO?Auto-generated?method?stub
		double??p?=?2*(i+j);
		return?p?;
	}
	@Override
	public?double?Area(double?m,double?n)?{
		//?TODO?Auto-generated?method?stub
		double?s?=?m*n;
		return?s;
	}
}
//測試類
import?java.util.*;
public?class?Inital?{

	public?static?void?main(String[]?args)?{
		//?TODO?Auto-generated?method?stub
		Scanner?scanner?=?new?Scanner(System.in);
		Shape?a?=?new?Rectangle();
		Shape?b?=?new?Circle();
		for(?int?i?=0?;i?<=?1;?i++){
			double?m=0;
			double?n=0;
			if(i?==?0){
				System.out.println("count?Rectangle,Please?input?length?and?width");
				System.out.println("length:");
				m?=?scanner.nextDouble();
				System.out.println("width:");
				n?=?scanner.nextDouble();?
				double?p?=?a.perimeter(m,?n);
				double?s?=?a.Area(m,?n);
				System.out.println("Rectangle's?perimeter?:"+p);
				System.out.println("Rectangle's?Area:"+s);
			}
			if(i?==?1){
				System.out.println("count?Circle,Please?input?radius");
//				System.out.println("PI:");
//				m?=?scanner.nextDouble();
				System.out.println("radius:");
				n?=?scanner.nextDouble();?
				double?p?=?b.perimeter(Math.PI,?n);
				double?s?=?b.Area(Math.PI,?n);
				System.out.println("Circle's?perimeter?:"+p);
				System.out.println("Circle's?Area:"+s);
			}
		}
	}

}


0 回復(fù) 有任何疑惑可以回復(fù)我~

可以使用可變長參數(shù)試試


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

關(guān)于子類中方法重寫的問題

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號