C# 中的抽象类和抽象方法

目录

抽象类

定义

抽象类的特点

示例

使用场景

抽象方法

定义

抽象方法的特点

示例

使用场景

密闭类

定义

密闭类的特点


在C#编程当中,抽象类和抽象方法是面向对象编程的核心概念,它们用于设计负载的系统,并且在代码中实现高效的抽象和继承

抽象类

定义

抽象类是一种不能被实例化的类,用作其他类的基类。它可以包含抽象方法和普通方法,抽象方法是没有实现的方法,需要在派生类中实现。抽象类通常用来定义一种通用的接口或基础行为,为派生类提供共享的功能和结构。

  • 抽象类的存在只有一个目的,就是被继承。用作其他类的基类。用abstract修饰
  • 抽象类是一种不能被实例化的类,即为不能通过new关键字来创建对象。
  • 抽象类可以包含抽象方法普通方法,以及它们的任意组合
  • 抽象类的抽象成员在派生类当中需要override关键字实现
  • 抽象类通常用来定义一种通用的接口或者基础行为,为派生类提供共享的功能和结构

抽象类的特点

  1. 抽象类不能实例化
  2. 抽象类可以包含字段、属性、方法、构造函数
  3. 可以在抽象类中定义非抽象方法(即具有具体实现的方法),这些方法可以被派生类继承和使用
  4. 抽象类可以包含抽象方法,这些方法没有实现,需要由派生类提供具体实现

示例

using System;

abstract class Animal
{
    public abstract void MakeSound(); // 抽象方法,派生类需要实现

    public void Sleep() // 普通方法,派生类可以继承和使用
    {
        Console.WriteLine("睡觉!");
    }
}

class Dog : Animal
{
    public override void MakeSound() // 实现抽象方法
    {
        Console.WriteLine("狗叫");
    }
}

class Program
{
    static void Main()
    {
        Dog myDog = new Dog();
        myDog.MakeSound();
        myDog.Sleep();
    }
}

使用场景

  • 当需要定义一个基础类,它包含某些通用的功能和结构,但不希望它被直接实例化时。
  • 当需要在多个派生类中共享一些通用实现时。
  • 当有一组派生类共享某些方法和属性时,使用抽象类可以减少代码重复。

抽象方法

定义

抽象方法是没有实现的方法只能存在于抽象类中。抽象方法定义了派生类需要实现的方法签名,但不提供具体的实现。它迫使所有派生类都提供自己对这个方法的实现

抽象方法的特点

  • 抽象方法只能在抽象类中声明。
  • 抽象方法没有方法体,只有方法签名。
  • 派生类必须重写(override)所有抽象方法,除非派生类也是抽象类。
  • 通过抽象方法可以确保派生类遵循相同的接口规范。

示例

using System;

abstract class Animal
{
    public abstract void MakeSound(); // 抽象方法,派生类需要实现
    public abstract void Eat();      // 新增的抽象方法,派生类也需要实现

    public void Sleep() // 普通方法,派生类可以继承和使用
    {
        Console.WriteLine("睡觉!");
    }
}

class Dog : Animal
{
    public override void MakeSound() // 实现抽象方法 MakeSound
    {
        Console.WriteLine("狗叫");
    }

    public override void Eat() // 实现抽象方法 Eat
    {
        Console.WriteLine("狗在吃骨头");
    }
}

class Program
{
    static void Main()
    {
        Dog myDog = new Dog();
        myDog.MakeSound();
        myDog.Eat();
        myDog.Sleep(); 
    }
}

使用场景

  • 当需要在派生类中提供特定的实现时,定义抽象方法确保所有派生类都遵循相同的接口规范。
  • 当某些方法在基类中没有实现,但在所有派生类中必须实现时。

密闭类

定义

有时我们可能不希望一个类被其他类继承。在 C# 中,我们可以使用sealed 关键字来实现这一点,创建一个不能被继承的密闭类。

密闭类的特点

  • 当一个类代表一个最终的、不可变的概念时。
  • 当你想要避免类的继承带来的复杂性或潜在的错误时。
  • 当你想要确保类的实现不会被修改或扩展时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值