抽象类
什么是抽象类:
抽象类的存在是为了表示某些抽象的概念,不会与具体的事物相联系,主要用于表示子类所拥有的共同特性,只能作为基类来使用。
特性:
<1>抽象类必须添加关键字abstract关键字。
<2>抽象类中可以包含普通函数和抽象方法。
<3>抽象类不能直接实例化(直接创建对象),但是可以通过子类创建对象进行访问。
<4>抽象类不能用sealed进行修饰,因为抽象类需要继承,一般只作为基类使用。
<5>抽象类不能实例化,但是可以拥有构造方法。
<6>子类在实现抽象类时必须实现抽象类中定义的抽象方法。
//定义一个玩家抽象类
public abstract class Player
{
}
抽象方法
特点:
<1>抽象方法没有方法体(没有具体的实现方法),只有方法定义,但是其子类必须行实现抽象方法。
<2>抽象方法必须写在抽象类中。
<3>抽象方法必须添加关键字abstract关键字。
<4>子类实现抽象方法必须添加override关键字
<5>抽象方法不能使用private修饰符
例 玩家攻击:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
//定义一个玩家抽象类
public abstract class Player
{
//所有玩家都具有攻击能力
public abstract void Attack();
}
public class Rabbit : Player
{
//兔子的攻击方式
public override void Attack()
{
Console.WriteLine ("跳你一脸" );
}
}
public class Pig : Player
{
//猪的攻击方式
public override void Attack()
{
Console.WriteLine ("踢你一身" );
}
}
class Program
{
static void Main(string[] args)
{
//抽象类不能直接创建实例[Player p = new Player ( );这种方式不被允许],但是可以通过子类进行创建
//这种形式被称为多态
Player p1 = new Rabbit ( );
Player p2 = new Pig ( );
//调用攻击方法
p1.Attack ( );
p2.Attack ( );
Console.ReadKey ( );
}
}
}