栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java初学者(3)——可比较的几何类(抽象类与接口)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java初学者(3)——可比较的几何类(抽象类与接口)

题目:

通过继承和多态的学习,同学们熟悉了GeometricObject类,现在用抽象类的观点,修改GeometricObject类以实现Comparable接口,且在GeometricObject类中定义一个静态方法:求两个GeometricObject对象中较大者。

此题提交时将会附加下述代码到被提交的Java程序末尾。

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        Circle circle1 = new Circle(input.nextInt());
        Circle circle2 = new Circle(input.nextInt());

        Circle circle = (Circle) GeometricObject.max(circle1, circle2);
        System.out.println("The max circle's radius is " + circle.getRadius());
        System.out.println(circle);
    }
}

输入样例:

4 10

输出样例:

The max circle's radius is 10.0
Circle radius = 10.0
答案:abstract class GeometricObject implements Comparable {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;

public static GeometricObject max(GeometricObject o1, GeometricObject o2) {
if (o1.compareTo(o2)>1)
return o1;
else {
return o2;
}
}


protected GeometricObject() {
dateCreated = new java.util.Date();
}


protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
this.color = color;
this.filled = filled;
}


public String getColor() {
return color;
}


public void setColor(String color) {
this.color = color;
}


public boolean isFilled() {
return filled;
}


public void setFilled(boolean filled) {
this.filled = filled;
}


public java.util.Date getDateCreated() {
return dateCreated;
}

@Override
public String toString() {
return "created on " + dateCreated + "ncolor: " + color + " and filled: " + filled;
}


public abstract double getArea();


public abstract double getPerimeter();
}

class Circle extends GeometricObject {
double radius;


Circle() {
radius = 1;
}


Circle(double newRadius) {
radius = newRadius;
}


public double getArea() {
return radius * radius * Math.PI;
}


public double getPerimeter() {
return 2 * radius * Math.PI;
}


void setRadius(double newRadius) {
radius = newRadius;
}

double getRadius() {
return radius;
}

public int compareTo(GeometricObject o) {
if (this.getArea() > o.getArea())
return 1;
if (this.getArea() < o.getArea())
return -1;
else if (this.getArea() > o.getArea())
return 1;
return 0;
}
    
    public String toString() {
return String.format("Circle radius = %.1f", radius);
}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号