抽象类
被抽象关键字abstract修饰的类
特点
1.不能被实例化的列 (但是遵循里氏替换原则 可以用父类装子类)
2.可以包含抽象方法
3.继承抽象类必须重写其抽象方法
abstract class Thing
{
抽象类中 任何普通类中的东西都可以有
还可以有抽象方法
public string name;
}
抽象函数
纯虚方法
1.只能在抽象类中申明
2.没有方法体
3.不能是private的
4.继承后必须实现 用override重写
虚方法可以选择是否写逻辑但是抽象方法没有方法体
子类中虚方法不重写也可以但是抽象方法必须重写
子类的子类中可以不重写第一个子类重写的抽象方法
也可以重写抽象方法 ,对于虚方法也是可以重写(虚方法和抽象方法都可以被子类无限的重写)
作用 不希望被实例化的对象,相对比较抽象的类可以使用抽象类
父类的行为不太需要被实现的,只希望子类定义具体的规则的 可以选择抽象类然后使用其中的抽象方法来定义规则
整体框架设计时 会使用
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Security.Cryptography;
using System.Text.Json.Serialization;
abstract class Animal
{
public abstract void Call();
}
class Human : Animal
{
public override void Call()
{
Console.WriteLine("人叫");
}
}
class Dog : Animal
{
public override void Call()
{
Console.WriteLine("狗叫");
}
}
class Cat : Animal
{
public override void Call()
{
Console.WriteLine("猫叫");
}
}
class Program
{
static void Main()
{
Animal[] animals=new Animal[3];
animals[0]=new Human();
animals[1]=new Dog();
animals[2]=new Cat();
for (int i=0; i < 3; i++)
{
animals[i].Call();
}
}
}