蓝鸥(www.lanou3g.com)是一家集产、学、研、创为一体的综合性移动互联网研发培训机构,致力于iOS开发、Unity3D游戏开发、Android开发、HTML5前端开发和Web安全攻防等技术人才的培养。
抽象类
有时设计类仅仅为了表达抽象的概念,不与具体的事物相联系,只作为其派生类的基类使用,用来描述所有子类的共同特征,这时我们可以使用抽象类。
抽象类不能被直接实例化,抽象类中可以包含抽象方法
抽象类和抽象方法一起使用,它们都是C#语言中的一种新的特性。下面让我们用代码演示一下使用方式:
usingSystem;
namespaceLesson_16
{
//抽象方法只能出现在抽象类中
publicabstractclassFood{
//抽象方法——需要添加abstract关键词
//在父类中定义的抽象方法不能够实现
publicabstractvoidEat();
}
publicclassApple:Food{
//子类实现父类的抽象方法时,需要添加override
publicoverridevoidEat(){
Console.WriteLine("HP+10");
}
}
classMainClass
{
publicstaticvoidMain(string[]args)
{
Appleapple=newApple();
apple.Eat();
}
}
}
抽象方法
抽象方法只声明不实现,但是在具体的子类中必须全部实现
抽象类中可以包含非抽象方法,抽象方法必须写在抽象类中
抽象方法不能使用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();
}
}
}
练习:创建一个球的抽象类,并且创建篮球,足球和排球派生类,自己创建3个抽象方法并在子类中重写。
网友评论