蓝鸥Unity开发基础二——课时16 抽象类

推荐视频讲师博客:http://11165165.blog.51cto.com/

抽象类

有时设计类仅仅为了表达抽象的概念,不与具体的事物相联系,只作为其派生类的基类使用,用来描述所有子类的共同特征,这时我们可以使用抽象类。

抽象类不能被直接实例化,抽象类中可以包含抽象方法

抽象类和抽象方法一起使用,它们都是C#语言中的一种新的特性。下面让我们用代码演示一下使用方式:

using System;

namespace Lesson_16
{
    //抽象方法只能出现在抽象类中
    public abstract  class Food {

        //抽象方法——需要添加abstract关键词
        //在父类中定义的抽象方法不能够实现
        public abstract void Eat();

    }
        public  class Apple:Food{

        //子类实现父类的抽象方法时,需要添加override
        public override void Eat(){
            
            Console.WriteLine ("HP+10");    
        }
            
    }
        
    class MainClass

    {
        public static void Main (string[] args)
        {
                Apple apple = new Apple ();
                apple.Eat ();


        }
    }
}

抽象方法

抽象方法只声明不实现,但是在具体的子类中必须全部实现

抽象类中可以包含非抽象方法,抽象方法必须写在抽象类中

抽象方法不能使用Private方法修饰符修饰

 

using System;

namespace Lesson_16
{
    //抽象方法只能出现在抽象类中
    //抽象类不能够直接实例化——new一个Food

    public abstract  class Food {

        //抽象方法——需要添加abstract关键词
        //1、在父类中定义的抽象方法不能够实现
        public abstract void Eat();


        //抽象类中可以包含普通的方法
        public void  Test(){
            Console.WriteLine ("Test");    

        }

    }
        public  class Apple:Food{

        //2、子类实现父类的抽象方法时,需要添加override
        public override void Eat(){
            
            Console.WriteLine ("HP+10");    
        }
            
    }

    public  class Water:Food{
        public  override void  Eat(){
            
        Console.WriteLine ("MP+10");    
        }
        
    }
        
    class MainClass

    {
        public static void Main (string[] args)
        {
//                Apple apple = new Apple ();
//                apple.Eat ();
            //多态,之后会进行讲解
            Food f1=new Apple();
            Food f2 = new Water ();
            f1.Eat ();
            f2.Eat ();
            //普通方法调用
            f1.Test ();

        }
    }
}


 

练习:创建一个球的抽象类,并且创建篮球,足球和排球派生类,自己创建3个抽象方法并在子类中重写。