编写一个Java 应用程序,运用Java 多态的知识:
[1)定义一个抽象类,描述一个矩形,包含有长、宽两种私有属性,有计算面积的抽象方法。
2)编写一个长方体类,继承自矩形类,同时该类描述长方体及其计算表面积和体积的方法。
(3)定义一个抽象类,描述一个圆形,包含有半径一种私有属性,有计算面积的抽象方法。(4)编写一个球体类,继承自圆形类,同时该类描述球体,计算其表面积和体积。
5)编写一个测试类,对以上所有类进行测试,要求用两种初始化方式赋值(set()方法和构造方法),
两种输出方式进行输出(get()方法和show()方法)。
/**
* 长方形
*/
public abstract class Shape {
private double length;
private double width;
public Shape(double length, double width){
this.length = length;
this.width = width;
}
double area(double length, double width) {
return length * width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
}
/**
* 长方体
*/
public class Square extends Shape{
private double height;
public Square(double length, double width) {
super(length, width);
}
public Square(double length, double width, double height){
this(length, width);
this.height = height;
}
public double area(double length, double width, double height) {
return 3 * (length * width + length * height + width *height);
}
public double volume(double length, double width, double height){
return length * width * height;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
/**
* 圆形
*/
public abstract class Circle {
public static final double PI = 3.14;
private double r;
public Circle(double r){
this.r = r;
}
public double area(double r){
return PI * r * r;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
}
public class Sphere extends Circle{
public Sphere(double r) {
super(r);
}
public double area(double r){
return 4 * PI * r * r;
}
public double volume(double r){
return 4 * PI * r * r * r / 3;
}
}
/**
* 测试类
*/
public class TestMain {
public static void main(String[] args) {
//矩形
Shape shape = new Shape(5, 3) {
@Override
public void setLength(double length) {
super.setLength(length);
}
@Override
public void setWidth(double width) {
super.setWidth(width);
}
};
System.out.println("长方形的面积为:"+shape.area(shape.getLength(), shape.getWidth()));
//长方体
Square square = new Square(5, 4, 2);
System.out.println("长方体的面积为:"+square.area(square.getLength(),square.getWidth(), square.getHeight()));
System.out.println("长方体的体积为:"+square.volume(square.getLength(),square.getWidth(), square.getHeight()));
//圆形
Circle circle = new Circle(5) {
@Override
public void setR(double r) {
super.setR(r);
}
};
System.out.println("圆形的面积为:"+circle.area(circle.getR()));
//球体
Sphere sphere = new Sphere(9);
System.out.println("球体的面积为:"+sphere.area(sphere.getR()));
System.out.println("球体的体积为:"+sphere.volume(sphere.getR()));
}
}
对你有帮助的话,请采纳一下哈!!!
自己写它不香吗