7.24 C#学习笔记(抽象类—抽象方法)

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

类是一个模板,抽象类就是一个不完整的模板,不完整的模板使用时不能创建对象(实例化)。

抽象类作用:抽象类是为了防止误操作,所以把类定义为抽象类 ,抽象类可以继承。

定义抽象类Class1并声明抽象方法:

    //声明抽象类
    //abstract  定义抽象类关键字
    //抽象类在定义数据时与普通类一致   主要作用体现在使用时
{
    abstract class  Class1
    {
        public string name;
        public int age;
        private int id;
        public string Name //定义属性
        {
            get { return name; }
            set { name = value; }
        }

        public void move() 
        {
            Console.WriteLine("移动");
        }


        //抽象方法
        //比如模拟攻击,每个攻击方式不一样,所以每个子类在继承时,按照前面的知识可以使用(1.虚方法重写,隐藏方法new)
        //上述对于每个子类中的方法来说,都需要重写方法逻辑,那么基类中的方法逻辑 就没有必要存在了,那么我们只做一个声明
        public abstract void AI();  //声明抽象方法,抽象方法不能有方法体(普通方法必须有方法体)
    }

抽象类不能实例化:

 //使用抽象类
// Class1 class1 = new Class1();//报错:抽象类不能实例化

以抽象类为基类,创建子类(派生类):

1.创建子类boss:

//继承Class1
internal class boss:Class1
{
    //子类继承抽象类,如果抽象类中存在抽象方法,子类就必须实现这个方法
    //怎么实现:override重写
    public override void AI()
    {
        Console.WriteLine("大招");
    }
}

在Main函数中调用boss类:

//使用boss类
            //抽象类我们可以理解为供其它类继承的模板(基类)
            boss b1= new boss();
            b1.name = "泰坦";
            Console.WriteLine(b1.Name);
            b1.move();

2.创建子类Class2:

 internal class Class2 : Class1
 {
     public override void AI()
     {
         Console.WriteLine("普攻");
     }
 }

基类Class1类是抽象类,不能实例化创建对象,但可以这样:

Class1 c1= new boss();//父类声明,子类构造
Class1 c2= new Class2();
//如果子类有这个方法,优先调用子类的数据和方法,如果没有则调用父类的
c1.name = "怪兽";
Console.WriteLine(c1.Name);
c1.move();

注意:1.抽象类不能实例化创建对象。

           2.抽象方法不能有方法体,普通方法必须有方法体。

           3.基类抽象类中含有抽象方法,在子类中必须重写实现这个方法。

你可能感兴趣的:(c#,visual,studio)