C#抽象类详解

抽象类的概念

使用abstract关键字修饰,类中至少有一个函数成员没有被完全实现。

抽象类的声明

public abstract class Animal
{
    public double Height { get; set; }
    public abstract double Weight { get; set; }

    public void Eat()
    {
        Console.WriteLine("Animal is eatting");
    }

    public abstract void Run();
}

这个类有以下特点:

1.声明这个类的时候前面加上了abstract关键字。

2.我们为这个类创建了一个Height的属性,实现了一个Eat的方法,但是最后一个Run方法时没有实现的,并且在前面加上了abstract关键字,我们结合抽象类的概念:在类中至少有一个函数成员没有被完全实现。如果我们把最后一个方法实现了,那这就不是一个抽象类了。

3.抽象类中能够添加abstract关键字只有属性和方法,并且添加abstract关键字的属性和方法是不能使用private修饰。因为添加abstract关键字的属性和方法需要被子类重写,使用private关键字后子类无法访问。

抽象类的使用

public class Dog : Animal
{
    public override double Weight { get; set; }

    public override void Run()
    {
        Console.WriteLine("Dog is running");
    }
}

public abstract class People : Animal
{
    public abstract void Sleep();
}

public class Chinese : People
{
    public override double Weight { get; set; }

    public override void Run()
    {
        Console.WriteLine("Chinese is running");
    }

    public override void Sleep()
    {
        Console.WriteLine("Chinese is sleeping");
    }
}

注意:

1.抽象类不能实例化

2.抽象类可以继承抽象类,没有任何具体实现的抽象类相当于接口

3.抽象类的设计应当遵循开放/关闭原则

4.抽象属性的重写主要是对get和set的重写

posted @   celestially98  阅读(350)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示