Java面向对象,类的继承(extends)题目练习,形状,矩形,圆形,正方形类 ,求周长,求面积

Java 类的继承,形状类,矩形,圆形正方形

联系题目:

概述:

  • 设计一个形状类Shape,
    • 方法:
      • 求周长
      • 求面积
  • 形状类的子类:
    • Rect(矩形)
    • Circle(圆形)
  • Rect类的子类:
    • Square(正方形)
  • 子类必须重写父类的求周长和求面积的方法,不同的子类会有不同的计算周长和面积的方法

分析:

各类之间的关系:

  • 形状类:
    • public class Shape
  • 圆形类-继承于-形状类:
    • public class Cirale extends Shape
  • 矩形类-继承于-形状类:
    • public class Rect extends Shape
  • 正方形类-继承于-矩形类:
    • public class Square extends Rect

类的详细设计:

共有以下及各类:

  1. 形状类
  2. 圆形类
  3. 矩形类
  4. 正方形类
  5. Demo
  6. 运行结果

1.形状类

package com.newedu.javabase.allday.classhomework;

public class Shape {
	//成员变量
	private double perimeter; //周长
	private double acreage;	//面积
	public  String shapeName;
	//构造方法
	public Shape() {
		
	}
	public Shape(double perimeter, double acreage) {
		super();
		this.perimeter = perimeter;
		this.acreage = acreage;
	}
	//成员方法
	public double getPerimeter() {
		return perimeter;
	}
	
	public void setPerimeter(double perimeter) {
		this.perimeter = perimeter;
	}
	public double getAcreage() {
		return acreage;
	}
	public void setAcreage(double acreage) {
		this.acreage = acreage;
	}
	public String getShapeName() {
		return shapeName;
	}
	public void setShapeName(String shapeName) {
		this.shapeName = shapeName;
	}
	/**
	 * 计算Shap周长
	 */
	public void computePerimeter() {
	}
	/**
	 * 计算Shap面积
	 */
	public void computeAcreage() {
	}
}

2.圆形类

package com.newedu.javabase.allday.classhomework;
/**
 * Circle--圆形类-继承于-Shape
 * @author 
 *  
 */
public class Cirale extends Shape {
	//成员变量
	private double radius;	//半径
	private static final double pi = Math.PI;	//π值
	public  String shapeName = "圆形";
	//构造方法
	public Cirale(){
	}
	public Cirale(double radius) {
		this.radius = radius;
		computePerimeter();
		computeAcreage();
	}
	//成员方法
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	/**
	 * 计算圆形周长
	 * C=2πr
	 */
	public void computePerimeter() {
		super.setPerimeter(Math.round(2*pi*this.radius));
	}
	/**
	 * 	计算圆形面积
	 *  S=πr*r
	 */
	public void computeAcreage() {
		super.setAcreage(Math.round(pi*Math.pow(radius, 2)));
	}
}

3.矩形类

package com.newedu.javabase.allday.classhomework;
/**
 * Rect--矩形类
 * @author 
 *
 */
public class Rect extends Shape {
	//成员变量
	private double width;	//宽度
	private double height;	//高度
	public  String shapeName = "矩形";
	//构造方法
	public Rect() {
	}
	public Rect(double width,double height) {
		this.width = width;
		this.height = height;
		computePerimeter();
		computeAcreage();
	}
	//成员方法
	public void setWidth(double width) {
		this.width = width;
	}
	public double getWidth() {
		return width;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getHeight() {
		return height;
	}
	/**
	 * 计算矩形周长
	 */
	public void computePerimeter() {
		super.setPerimeter(2*(this.height+this.width));
	}
	/**
	 * 计算矩形面积
	 */
	public void computeAcreage() {
		super.setAcreage(this.height*this.width);
	}
}

4.正方形类

package com.newedu.javabase.allday.classhomework;
/**
 * Square--正方形类--继承于Rect
 * @author 
 */
public class Square extends Rect {
	public  String shapeName = "正方形";
	//构造方法
	public  Square() {
	}
	public  Square(double width) {
		super(width,width);
		computePerimeter();
		computeAcreage();
	}
	/**
	 * 计算正方形周长
	 */
	public void computePerimeter() {
		super.setPerimeter(4*super.getWidth());
	}
	/**
	 * 计算正方形面积
	 */
	public void computeAcreage() {
		super.setAcreage(Math.pow(super.getWidth(), 2));
	}
}

5.Demo

package com.newedu.javabase.allday.classhomework;

public class Demo01 {
	public static void main(String[] args) {
		//定义一个长方形对象  宽度:7,高度:4
		Rect rect1 = new Rect(7,4);
		//定义一个圆形对象	半径:6
		Cirale  cirale1 = new Cirale(6);
		//定义一个正方形对象	 宽度:5
		Square square1 = new Square(5);
		System.out.println("形状\t周长\t面积");
		System.out.println(rect1.shapeName+"\t"+rect1.getPerimeter()+"\t"+rect1.getAcreage());
		System.out.println(cirale1.shapeName+"\t"+cirale1.getPerimeter()+"\t"+cirale1.getAcreage());
		System.out.println(square1.shapeName+"\t"+square1.getPerimeter()+"\t"+square1.getAcreage());
	}

}

6.运行结果

/*
形状	周长	面积
矩形	22.0	28.0
圆形	38.0	113.0
正方形	20.0	25.0

*/

ヾ(◍°∇°◍)ノ゙ 加油

发布了18 篇原创文章 · 获赞 2 · 访问量 1896

猜你喜欢

转载自blog.csdn.net/CN_Orange_/article/details/105280684