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的重写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix