Files
Csharp/C#核心/Lesson18_多态-抽象类和抽象方法/Program.cs
T
2025-09-14 15:08:38 +08:00

78 lines
1.9 KiB
C#

namespace Lesson18_多态_抽象类和抽象方法
{
#region 知识点一 抽象类
//概念
//被抽象关键字abstract修饰的类
//特点:
//1.不能被实例化的类
//2.可以包含抽象方法
//3.继承抽象类必须重写其抽象方法
abstract class Thing
{
//抽象类中封装的知识点都可以用
public string name;
//可以在抽象类中写抽象函数
}
class Water : Thing
{
}
#endregion
#region 知识点二 抽象函数
//又叫 纯 虚方法
//用abstract关键字修饰的方法
//特点:
//1.只能在抽象类中声明
//2.没有方法体
//3.不能是私有的
//4.继承后必须实现 用override重写
abstract class Fruit
{
public string name;
public abstract void Bad();//抽象方法 是一定不能有函数体的(大括号什么的)并且在子类中必须重写
public virtual void Test()//虚方法可以不重写
{
}
}
class Apple : Fruit
{
public override void Bad()
{
Console.WriteLine();
}
}
class SuperApple : Apple
{
public override void Bad()
{
base.Bad();
}
public override void Test()
{
base.Test();
}
}
#endregion
internal class Program
{
static void Main(string[] args)
{
//抽象类不能被实例化
//Thing t = new Thing();
//遵循里氏替换原则
Thing water = new Water();
}
}
//总结:
//如何选择普通类和抽象类?
//不希望被实例化的对象,比较笼统的对象
//例如:水果,人,事情
//或 父类中的行为不太需要被实现的,只希望子类区定义具体的规则的
//可以选择抽象类
}