抽象类定义和使用

抽象类是一种在面向对象编程中的概念,是一种多态性的实现方式。

它是一种不能被实例化的类,用于定义通用的行为和属性,并提供一个模板以供其子类进行继承和实现。

抽象类用关键字abstract 声明, 它可以定义抽象方法和具体方法:

    抽象方法是没有实际实现的方法,它们必须在派生类中进行实现。

    具体方法是在抽象类中提供默认的实现。

抽象类的主要特点如下:

  1. 不能被实例化:抽象类不能直接实例化,也就是不能创建抽象类的对象。抽象类只能被其他类继承,然后通过子类的实例来使用。

  2. 可以包含抽象方法:抽象类中可以包含一个或多个抽象方法,这些方法没有具体的实现。抽象方法用abstract关键字声明,并且没有大括号的方法体。

  3. 子类必须重写抽象方法:当一个类继承了抽象类时,它必须实现(重写)抽象类中所有的抽象方法。否则,子类也必须被定义成抽象类。

  4. 可以包含普通方法和属性:抽象类中可以定义普通的方法和属性,这些方法和属性有具体的实现。子类可以直接继承并使用它们。

定义抽象类和抽象方法实现多态范例(C#):

using System;

// 用关键字abstract 定义抽象类Animal
abstract class Animal
{
    // 用关键字abstract定义抽象方法,没有具体实现
    public abstract void MakeSound();

    // 定义普通方法,有具体实现
    public void Sleep()
    {
        Console.WriteLine("Animal is sleeping");
    }
}

// 子类Dog继承抽象类Animal并实现抽象方法
class Dog : Animal
{
    // 必须重写父类的抽象方法 
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

// 子类Cat 继承抽象类Animal并实现抽象方法
class Cat : Animal
{
    // 必须重写父类的抽象方法
    public override void MakeSound()
    {
        Console.WriteLine("Cat meows");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal dog = new Dog();//抽象类不能直接实例化
        dog.MakeSound(); // 调用子类重写的方法,输出: "Dog barks"
        dog.Sleep();    // 使用父类的普通方法,输出: "Animal is sleeping"

        Animal cat = new Cat();
        cat.MakeSound(); // 调用子类重写的方法,输出: "Cat meows"
        cat.Sleep();    // 使用父类的普通方法,输出: "Animal is sleeping"
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值