C# 抽象类_抽象方法 (abstract关键字)

发布于:2025-07-25 ⋅ 阅读:(19) ⋅ 点赞:(0)

抽象类(abstract 定义抽象类的关键字)

C# 允许把类声明为抽象类   抽象类可以包含普通函数与抽象函数 

类是一个模板 那么抽象类就是一个不完整的模板  不完整的模板使用时不能构造对象 (不能实例化

抽象类在定义成员时与普通类一致  主要作用体现在使用类时

定义抽象类是为了防止误操作  所以把类定义为抽象类  抽象类可以被继承

(抽象类其实就是一个大的基类模板,不可以实例化,只能继承给子类使用)

抽象方法

抽象方法是基类中的一个声名
比如模拟攻击 每个攻击方式不一样 所以每个子类在继承这个类的时候 按照前面的知识可以使用(虚方法 重写   隐藏方法new ) 对于每个子类中的方法来说 都需要重写这个方法逻辑 那么父类(模板)中的方法逻辑就没有必要存在了  那么就只做一个声明就可以了

注:抽象方法不能有 方法体即 “{}

 public abstract void Ai();

 抽象类 Class1(基类)

abstract class Class1
{
    //字段
    public string name;
    public int age;
    private int id;
    //属性
    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }
    //虚方法
    public virtual void Move()
    {
        Console.WriteLine("移动");
    }
    //抽象方法
     public abstract void Ai();
}

 Class2继承抽象类Class1

//继承抽象类Class1
internal class Class2 : Class1
{
    public override void Ai()
    {
        Console.WriteLine("小兵的普攻");
    }
}

Boss继承抽象类Class1

子类继承抽象类  如果抽象类中定义了有抽象方法  子类就必须去实现这个方法怎么实现?
答:通过override重写 

 internal class Boss : Class1
 {
     //通过override重写
     public override void Ai()
     {
         Console.WriteLine("Boss的大招");
     }
     public override void Move()
     {
         Console.WriteLine("Boss的移动");
     }
 }

主函数中创建类的对象

  static void Main(string[] args)
  {           
      //使用抽象类
      //Class1 c1 = new Class1();  // 抽象类不能被实例化

      //抽象了我们可以理解为就是一个供其它类继承的模板
      Boss b1 = new Boss();
      b1.name = "泰坦";
      Console.WriteLine(b1.Name);
      b1.Move();
      //b1.Ai();

      Class1 c1 = new Boss();//父类函数子类构造
      Class2 c2 = new Class2(); 
      c1.name = "怪兽";
      Console.WriteLine(c1.Name);
      c1.Move();
      c2.Move();
  }


网站公告

今日签到

点亮在社区的每一天
去签到