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.形状类
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
*/
ヾ(◍°∇°◍)ノ゙ 加油