每天写java到期末考试--实验四---接口与抽象类--6.29

第一部分:接口与类的实现

Shape接口
java复制代码



public interface Shape {  
    double getArea();  
    double getPerimeter();  
}
Circle类




public class Circle implements Shape {  
    private double r;  
  
    public Circle(double r) {  
        this.r = r;  
    }  
  
    @Override  
    public double getArea() {  
        return Math.PI * r * r;  
    }  
  
    @Override  
    public double getPerimeter() {  
        return 2 * Math.PI * r;  
    }  
}
Rectangle类



public class Rectangle implements Shape {  
    private double x;  
    private double y;  
  
    public Rectangle(double x, double y) {  
        this.x = x;  
        this.y = y;  
    }  
  
    @Override  
    public double getArea() {  
        return x * y;  
    }  
  
    @Override  
    public double getPerimeter() {  
        return 2 * (x + y);  
    }  
}
测试类




public class ShapeTest {  
    public static void main(String[] args) {  
        Circle circle = new Circle(5);  
        System.out.println("Circle Area: " + circle.getArea());  
        System.out.println("Circle Perimeter: " + circle.getPerimeter());  
  
        Rectangle rectangle = new Rectangle(4, 6);  
        System.out.println("Rectangle Area: " + rectangle.getArea());  
        System.out.println("Rectangle Perimeter: " + rectangle.getPerimeter());  
    }  
}

第二部分:抽象类与类的实现

ShapeClass抽象类



public abstract class ShapeClass {  
    public abstract double getArea();  
    public abstract double getPerimeter();  
}
CircleClass类




public class CircleClass extends ShapeClass {  
    private double r;  
  
    public CircleClass(double r) {  
        this.r = r;  
    }  
  
    @Override  
    public double getArea() {  
        return Math.PI * r * r;  
    }  
  
    @Override  
    public double getPerimeter() {  
        return 2 * Math.PI * r;  
    }  
}
RectangleClass类



public class RectangleClass extends ShapeClass {  
    private double x;  
    private double y;  
  
    public RectangleClass(double x, double y) {  
        this.x = x;  
        this.y = y;  
    }  
  
    @Override  
    public double getArea() {  
        return x * y;  
    }  
  
    @Override  
    public double getPerimeter() {  
        return 2 * (x + y);  
    }  
}
测试类




public class ShapeClassTest {  
    public static void main(String[] args) {  
        CircleClass circle = new CircleClass(5);  
        System.out.println("Circle Area: " + circle.getArea());  
        System.out.println("Circle Perimeter: " + circle.getPerimeter());  
  
        RectangleClass rectangle = new RectangleClass(4, 6);  
        System.out.println("Rectangle Area: " + rectangle.getArea());  
        System.out.println("Rectangle Perimeter: " + rectangle.getPerimeter());  
    }  
}

在这两个实现中,第一部分使用了接口来定义公共行为,而第二部分使用了抽象类。抽象类提供了部分实现(尽管在这个例子中没有),并且可以包含非抽象的方法,而接口中的所有方法都是抽象的。在测试类中,我们分别创建了圆和长方形的实例,并调用了它们的getArea()和getPerimeter()方法来验证实现是否正确。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值