天天看點

使用繼承機制,分别設計實作抽象基類圖形類,派生類圓形類、正方形類、長方形類

編寫Java程式。

(1)使用繼承機制,分别設計實作抽象基類圖形類,派生類圓形類、正方形類、長方形類,要求:

①有方法擷取圖形面積、擷取圖形周長等;

②使用構造方法為其成員屬性賦初值;

③在每個派生類中都重寫toString()方法,傳回所有屬性的資訊;

④根據文字描述合理設計類的其他成員屬性和方法。

(2)設計實作畫闆類,要求:

①長和寬分别為10.0與5.0的長方形;

②半徑為3.0的圓形;

③邊長為4.0的正方形;

④分别求三個對象的面積和周長,并将每個對象的所有屬性資訊列印到控制台。

2、基于上題背景,設計實作以下程式:

(1)設計Comparable接口,接口中設計compareTo()方法,用來比較對象。此方法的傳回值類型設計為int類型。此方法接收一個參數,參數類型為圖形類。

(2)在圖形類中實作compareTo()方法,用來比較兩個圖形的面積大小。

(3)在測試類中,建立圖形類的數組,數組中存放多個圓形、正方形、長方形對象,使用compareTo()方法找出數組中面積最大的圖形。

提示:比較對象時,可以将compareTo()方法的傳回值設定為1、0、-1,來代表比較結果,目前對象大、兩者相等或者目前對象小。再次提醒,此題涉及的代碼全部展示在此題的題号下,與上一題相獨立。

package zuoye0926;

/**
 * <p>
 * Title:Graph Description:抽象類的使用
 * 
 * 
 */

public abstract class Graph implements Comparable {// 定義一個抽象類
	public abstract double area();

	public abstract double girth();// 建立兩個方法

	public int compareTo(Graph graph) {
		int i = 0;
		if (this.area() > graph.area()) {
			return 1;
		} else if (this.area() < graph.area()) {
			return -1;
		} else {
			return i;

		}
	}

}
           
package zuoye0926;
/**
 * 
 * @author Administrator
 * 圓
 *
 */
public class Round extends  Graph{
	private double raidus;
	//構造方法,初始化參數
	public Round(double raidus) {
		super();
		this.raidus = raidus;
	}
	public double getRaidus() {
		return raidus;
	}
	public void setRaidus(double raidus) {
		this.raidus = raidus;
	}
	/*
	 * 計算圓的面積
	 * @see zuoye0926.Graph#area()
	 */
	@Override
	public double area() {
		
		return 3.14*raidus*raidus;
	}
	/*
	 * 計算圓的周長
	 * @see zuoye0926.Graph#area()
	 */
	@Override
	public double girth() {
		
		return 2*3.14*raidus;
	}
  


}
           
package zuoye0926;

public class Square extends Graph{
	
	private double length;
	public double getLength() {
		return length;
	}
	
    public Square(double length) {
		super();
		this.length = length;
	}
	public double getlength() {
		return length;
	}
	public void setlength(double length) {
		this.length = length;
		
	}
	

	@Override
	public double girth() {
		
		return length*4;
	}

	@Override
	public double area() {
		
		return length*length;
	}

}
           
package zuoye0926;
/**
 * 
 * @author Administrator
 * 長方形類繼承
 *
 */

public class Oblong extends Graph{
	
	private double length;
	public double getLength() {
		return length;
	}
	public void setLength(double length) {
		this.length = length;
	}

	private double width;

	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	
	public Oblong(double length, double width) {
		super();
		this.length = length;
		this.width = width;
	}
	public double getlength() {
		return length;
	}
	public void setlength(double length) {
		this.length = length;
		
	}
	

	public double area() {
	
		return length*width;
	}

	@Override
	public String toString() {
		return "Square []";
	}

	@Override
	public double girth() {
		// TODO Auto-generated method stub
		return length*2+width*2;
	}


}
           
package zuoye0926;

public class TestGraph {

	public static void main(String[] args) {
		//使用多态的形式執行個體化圖形對象
		Graph r=new Round(3.0);
		System.out.println(r.area());
		System.out.println(r.girth());
		//圓
		
		
		
		Graph d=new Oblong(4.0,5.0);
		System.out.println(d.area());
		System.out.println(d.girth());
		//長方形
		
		Graph s=new Square(5.0);
		System.out.println(s.area());
		System.out.println(s.girth());
		//正方形
	}

}



![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20190929115247902.png)


           
package zuoye0926;
/**
 * Title:
 * @author Administrator
 *
 */
public interface Comparable {
 public int compareTo(Graph graph);
}
           
package zuoye0926;

public class TestGraphs {
	public static void main(String[]args){
		//執行個體化對象數組
		

			/**
			 * @param args
			 */
		
				//執行個體化圖形對象數組
				Graph[] sha = new Graph[10];
				for (int i = 0; i < 3; i++) {
					Square c = new Square(2.0 + i);
					sha[i] = c;
				}
				for (int i = 3; i < 7; i++) {
					Square s = new Square(3.0 + i);
					sha[i] = s;
				}
				for (int i = 7; i < 10; i++) {
					Oblong r = new Oblong(3.0 + i ,4.0 +i);
					sha[i] = r;
				}
				 Graph max = sha[0];
				for (int i = 0; i < sha.length; i++) {
					if (sha[i].area() > max.area()) {
						max = sha[i];
					}
				}
				System.out.println(max.area());

			}
		}
	
           
使用繼承機制,分别設計實作抽象基類圖形類,派生類圓形類、正方形類、長方形類
使用繼承機制,分别設計實作抽象基類圖形類,派生類圓形類、正方形類、長方形類