抽象类和接口-形状抽象类

定义一个形状(shape)的抽象类,包括私有属性PI(常量),求面积的抽象方法,以及返回PI的值的普通方法;
三个实现类:矩形(rectangle)、圆(circle)和三角形(triangle),分别重写面积方法。
矩形包括长、宽两个私有属性,圆包括私有属性半径,三角形包括私有属性abc三边。
三角形在求面积之前先判是否构成三角形。
输出图形的面积通过覆写toString()方法完成。
定义测试类,在Main方法中初始化矩形对象和圆对象,输出面积。

public class Shape {
   
    private double PI=Math.PI;
    abstract class Area{
   
        public abstract void getArea();
    }
    public double getPI(){
   
        return PI;
    }
}  
public class Rectangle extends Shape{
   
    private int length;
    private int width;
    double area;
    public Rectangle(int l,int w) {
   
        setLength(l);
        setWidth(w);
   
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
假设我们要定义一个形状 Shape,它有一个计算面积的方法 CalculateArea(),那么我们可以使用抽象类接口来定义它: 使用抽象类: ```csharp public abstract class Shape { public abstract double CalculateArea(); } public class Circle : Shape { public double Radius { get; set; } public override double CalculateArea() { return Math.PI * Radius * Radius; } } public class Rectangle : Shape { public double Width { get; set; } public double Height { get; set; } public override double CalculateArea() { return Width * Height; } } ``` 使用接口: ```csharp public interface IShape { double CalculateArea(); } public class Circle : IShape { public double Radius { get; set; } public double CalculateArea() { return Math.PI * Radius * Radius; } } public class Rectangle : IShape { public double Width { get; set; } public double Height { get; set; } public double CalculateArea() { return Width * Height; } } ``` 可以看到,使用抽象类时,我们定义了一个抽象类 Shape,它有一个抽象方法 CalculateArea(),这个方法是没有具体实现的。然后我们定义了两个具体的子 Circle 和 Rectangle,它们继承自 Shape,并实现了 CalculateArea() 方法。 而使用接口时,我们定义了一个接口 IShape,它只有一个方法 CalculateArea(),没有具体实现。然后我们定义了两个 Circle 和 Rectangle,它们实现了 IShape 接口,并实现了 CalculateArea() 方法。 可以看到,使用抽象类时,我们可以在 Shape 中定义一些具体的方法和字段,而使用接口时,我们只能定义方法,不能定义字段和具体的实现。另外,一个可以实现多个接口,但只能继承一个抽象类

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值