优秀的编程知识分享平台

网站首页 > 技术文章 正文

C#自学——抽象类(abstract)

nanyue 2025-01-12 17:33:52 技术文章 2 ℃

抽象类和普通类的区别在于不能实例化,抽象类能写抽象方法,也能写普通的方法、虚方法。

抽象方法 类似 接口 里面的方法,所以抽象方法不可以实现,需要用子类重写(override),接口不需要重写;抽象类可以直接实现,也可以由子类实现

子类继承的时候,抽象类必须放在接口类的前面

// 抽象类需要写 class 关键词,接口不需要
abstract class Animal
{
  // 抽象类是接口和继承的集合
  public abstract void Study();
  
  public virtual void Run()
  {
    Console.WriteLine("抽象类 虚方法 Run");
  }

  public void Eat()
  {
    Console.WriteLine("抽象类 普通方法 Eat");
  }
}

interface IAni
{
  void Sleep();
}

// 子类:抽象类, 接口 顺序不能搞错了
class Dog : Animal, IAni
{
  // 接口在可以子类直接实现
  public void Sleep()
  {
    Console.WriteLine("接口 Sleep");
  }
  
	// 抽象方法需要在子类重写
  public override void Study()
  {
    Console.WriteLine("抽象类 抽象方法 Study");
  }
}

class Print
{
  static void Main()
  {
    Dog dog = new Dog();
    dog.Sleep();
    dog.Study();
    dog.Eat();
    dog.Run();
  }
}

输出:

抽象类 抽象方法 Study
抽象类 普通方法 Eat
抽象类 虚方法 Run
最近发表
标签列表