C#抽象类

不能实例化 ,必须被继承

抽象类的出现类似于接口, 都是为了制定一个规制, 让子类去实现这些规制,而不是直接操作抽象类本身

抽象类的格式:

访问修饰符 abstract class 抽象类名{}

抽象类的特点:

  • 抽象类使用abstract关键字来定义

  • 抽象类中可以有

    实例成员 (实例方法必须实现,即必须有方法体),可以有

    抽象成员(抽象方法不能实现,即不能有方法体, 必须等待子类继承后,在子类重写override) , 也可以有

    静态成员(静态方法必须实现,即必须有方法体),还能有

    虚方法(必须实现,即必须有方法体)

  • 抽象类不能实例化 , 抽象类被定义之后 ,一般不直接使用它, 而是使用它的子类

  • 抽象类必须被继承 , 才有存在的意义

  • 继承抽象类的子类必须实现抽象类中给所有的抽象方法

抽象类的应用场景:

  • 定义统一的接口和行为,提供通用的方法,避免重复代码。

  • 强制子类实现某些行为,保证接口的一致性。

  • 共享通用功能,但不暴露给具体的类。

  • 实现多态,通过抽象类来管理不同类型的对象。

  • 避免父类实例化,将父类作为一种模板类使用。

注意:

  • override只能重写虚方法, 不能重写实例和静态方法

    访问修饰符 override 返回值类型 虚方法名(){
        base.虚方法名(); // base基类, 调用基类中的虚方法,即保留原来的业务逻辑
        //....重写虚方法的内容
    }
  • new 可以将实例方法和静态方法隐藏

    隐藏一般想使用原来的方法名 ,但是不想使用原来的业务逻辑

    访问修饰符 new 返回值类型 实例方法名(){
    ​
        //....重写实例方法的内容
    }
    访问修饰符 static new 返回值类型 静态方法名(){
    ​
        //....重写静态方法的内容
    }
### C#抽象类的概念及用法 #### 抽象类的定义 在 C# 编程中,抽象类是一种特殊的类,它不能被直接实例化。其主要目的是为了定义一组行为规范并提供部分默认实现。抽象类可以包含两种类型的方法:抽象方法(仅有声明而无具体实现)以及具体方法(具有实际功能的实现)。通过这种方式,抽象类能够为派生类设定框架结构的同时也允许灵活性的存在[^2]。 #### 使用场景分析 当构建复杂的应用程序时,如果多个子类存在共同的操作逻辑但是又各自具备独特的特性,则适合采用抽象类来统一管理这些共通之处。例如,在图形绘制软件里不同形状如圆形、矩形都需遵循相同的面积计算规则却有着各自的算法细节;此时就可以创建一个名为 `Shape` 的抽象基类,并在其内部定义好通用属性与操作模式——包括但不限于位置坐标设置或是颜色填充等功能模块的设计思路[^1]。 #### 示例代码展示 下面给出一段简单的示例代码用来演示如何正确运用C#中的抽象类: ```csharp // 定义抽象类 Shape public abstract class Shape { public string Name { get; set; } // 构造函数初始化名称 protected Shape(string name){ this.Name = name; } // 提供具体的ToString() 方法覆盖 public override string ToString(){ return $"This is a shape named '{this.Name}'"; } // 声明一个纯虚拟(abstract)成员 Area() public abstract double GetArea(); } // 继承自 Shape 并实现了GetArea()的具体版本 public class Circle : Shape{ private readonly double radius; public Circle(double r, string n="Circle") : base(n){ this.radius =r ; } public override double GetArea(){ return Math.PI * (radius*radius); } } ``` 上述例子展示了怎样利用抽象类去建立基本的对象模型架构,同时让各个特定类型的实体对象负责完成自己独有的业务处理流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值