天天看点

使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类

编写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());

			}
		}
	
           
使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类
使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类