一.什么是抽象类?
就是抽象处理啊的东西,表示一个大类,无法具体划出具体对象,例如动物的分支不可能再是动物
表达式:abstract class dongwu{}
这样在主函数中就无法用new实例化该类
二.游戏表盘案例
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
//表盘案例
namespace ConsoleApp1
{
abstract class Dashborad//表盘无法实例化
{
public abstract void Render();//生成虚函数类型
}
class 雇佣兵的HP: Dashborad
{
public int HP = 200;
public override void Render() { Console.WriteLine("雇佣兵的生命值为{0}",this.HP); } //复写
}
class 主角的HP: Dashborad
{
public int HP = 100;
public override void Render() { Console.WriteLine("主角生命值为{0}",this.HP); }//复写
}
class 主角
{
public 主角的HP HP=new 主角的HP();//包含自己的HP
public 雇佣兵 Helper = new 雇佣兵();//包含一个雇佣兵
}
class 雇佣兵
{
public 雇佣兵的HP HP = new 雇佣兵的HP();//包含自己的HP
}
class Program
{
static void 重绘(List<Dashborad> dashborad) //创建一个群体的重绘
{
foreach(var db in dashborad)
db.Render();//重新输出所有群体的血条
}
static void Cls()
{
for (int i = 1; i <= 42; i++)
{
Console.WriteLine(" ");
}
}
static void Main(string[] args)
{
主角 me =new 主角();
List<Dashborad>dbs=new List<Dashborad>();//创建集合
dbs.Add(me.HP);//集合里面添加我的血条
dbs.Add(me.Helper.HP);//集合里面添加雇佣兵的血条
重绘(dbs);
Thread.Sleep(500);
Cls();
me.HP.HP -= 50;
me.Helper.HP.HP -= 99;
Thread.Sleep(500);
重绘(dbs);
}
}
}