几行代码帮你搞懂C#中的抽象类和抽象方法

链接: 源码
在C#中,抽象类和抽象方法都是面向对象编程(OOP)的重要概念,用于创建具有通用行为的类,同时允许派生类实现特定的细节。

  • 抽象类中可以有抽象方法,也可以没有抽象方法;

  • 抽象方法只能存在抽象类中,不能存在普通类中

抽象类(Abstract Class)

抽象类是一个特殊的类,它不能被实例化。抽象类的主要目的是作为其他类的基类,为派生类提供一个通用的模板。抽象类可以包含抽象方法和非抽象方法。

抽象类使用abstract关键字来声明。例如:

public abstract class Animal
{
    public abstract void MakeSound(); // 抽象方法

    public void Move() // 非抽象方法
    {
        Console.WriteLine("The animal moves.");
    }
}

在上面的例子中,Animal是一个抽象类,它有一个抽象方法MakeSound和一个非抽象方法Move

抽象方法(Abstract Method)

抽象方法是一个没有实现的方法,它必须在任何非抽象派生类中被重写。抽象方法使用abstract关键字声明,并且没有方法体(即没有花括号{}及其中的内容)。

抽象方法只能存在于抽象类中。例如:

public abstract class Animal
{
    public abstract void MakeSound(); // 抽象方法,没有方法体
}

//非抽象类中不能有抽象方法
//public class NonAbstract
//{
//    public abstract void display(string text);
//}

任何继承自抽象类的非抽象类都必须提供抽象方法的实现。例如:

public class Dog : Animal
{
    public override void MakeSound() // 重写抽象方法
    {
        Console.WriteLine("The dog barks.");
    }
}

在这个例子中,Dog类继承自Animal类,并提供了MakeSound方法的具体实现。注意,使用override关键字来表示该方法是对基类中抽象方法的重写。

使用抽象类和抽象方法

抽象类和抽象方法的主要用途是创建一个类结构,其中基类定义了一组通用的属性和方法,而派生类则提供这些方法的特定实现。这种方法允许代码重用和灵活性,因为你可以创建多个派生类,每个类都有自己独特的行为,同时共享基类的通用行为。

以下是一个使用抽象类和抽象方法的简单示例:

// 抽象类
public abstract class Shape
{
    public abstract double GetArea(); // 抽象方法
}

// 继承自Shape的非抽象类
public class Circle : Shape
{
    private double radius;
    
    public Circle(double radius)
    {
        this.radius = radius;
    }
    
    public override double GetArea() // 重写抽象方法
    {
        return Math.PI * radius * radius;
    }
}

// 另一个继承自Shape的非抽象类
public class Rectangle : Shape
{
    private double width;
    private double height;
    
    public Rectangle(double width, double height)
    {
        this.width = width;
        this.height = height;
    }
    
    public override double GetArea() // 重写抽象方法
    {
        return width * height;
    }
}

在这个例子中,Shape是一个抽象类,它有一个抽象方法GetAreaCircleRectangle类都继承自Shape类,并提供了GetArea方法的具体实现。这样,你就可以创建CircleRectangle对象,并调用它们的GetArea方法来计算面积,而不需要关心它们的具体实现细节。

英语

单词音标解释例句难点单词拓展
Circle/ˈsɜːkl/n. 圆;圈;圆圈;圆形;圈子,阶层,界;圆周;环;圆形物;环状物;弧形楼座 v. (尤指在空中)盘旋,环行,转圈;圈出;圈起;围绕…画圈 记忆 circ 圆,环 + -le 反复,连续1) He has a small circle of friends… 2) you draw a circle above the right answer.
radius/ˈreɪdiəs/n. 半径(长度);桡骨;周围We are measuring the radius of the circle.
rectangle/ˈrektæŋɡl/n. 长方形;矩形 记忆 rect- 正,直 + angle n.角Suppose the width of a rectangle is x metres.
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值