【蓝鸥AR/VR开发基础二】 抽象类

蓝鸥(www.lanou3g.com)是一家集产、学、研、创为一体的综合性移动互联网研发培训机构,致力于iOS开发、Unity3D游戏开发、Android开发、HTML5前端开发和Web安全攻防等技术人才的培养。

抽象类

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

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

【蓝鸥AR/VR开发基础二】 抽象类_第1张图片

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

usingSystem;

namespaceLesson_16

{

//抽象方法只能出现在抽象类中

publicabstractclassFood{

//抽象方法——需要添加abstract关键词

//在父类中定义的抽象方法不能够实现

publicabstractvoidEat();

}

publicclassApple:Food{

//子类实现父类的抽象方法时,需要添加override

publicoverridevoidEat(){

Console.WriteLine("HP+10");

}

}

classMainClass

{

publicstaticvoidMain(string[]args)

{

Appleapple=newApple();

apple.Eat();

}

}

}

【蓝鸥AR/VR开发基础二】 抽象类_第2张图片

抽象方法

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

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

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

usingSystem;

namespaceLesson_16

{

//抽象方法只能出现在抽象类中

//抽象类不能够直接实例化——new一个Food

publicabstractclassFood{

//抽象方法——需要添加abstract关键词

//1、在父类中定义的抽象方法不能够实现

publicabstractvoidEat();

//抽象类中可以包含普通的方法

publicvoidTest(){

Console.WriteLine("Test");

}

}

publicclassApple:Food{

//2、子类实现父类的抽象方法时,需要添加override

publicoverridevoidEat(){

Console.WriteLine("HP+10");

}

}

publicclassWater:Food{

publicoverridevoidEat(){

Console.WriteLine("MP+10");

}

}

classMainClass

{

publicstaticvoidMain(string[]args)

{

//Appleapple=newApple();

//apple.Eat();

//多态,之后会进行讲解

Foodf1=newApple();

Foodf2=newWater();

f1.Eat();

f2.Eat();

//普通方法调用

f1.Test();

}

}

}

【蓝鸥AR/VR开发基础二】 抽象类_第3张图片

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

【蓝鸥AR/VR开发基础二】 抽象类_第4张图片

你可能感兴趣的:(【蓝鸥AR/VR开发基础二】 抽象类)