c语言基础知识总结文库(基础语法继承介绍)
c语言基础知识总结文库(基础语法继承介绍)派生出三个类:案例:基类敌人类(HP Speed方法 ai move)1、实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承非常的有用。2、接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。注意:C#不支持多重实现继承。
一、C#语法介绍中继承是什么?
前面的文章中我们学习了如何定义类,用类当做模板来声明我们的数据。
很多类中有相似的数据,比如在一个游戏中,有BOSS类,小怪类Enemy 这些类它们有很多相同的属性,也有不同的,这个时候我们可以使用继承来让这两个类继续同一个类。
继承的两种方式:
1、实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承非常的有用。
2、接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。
注意:C#不支持多重实现继承。
二、程序代码示例案例:基类敌人类(HP Speed方法 ai move)
派生出三个类:
boss类、type1enemy类、type2enemy类
using System;
using System.Collections.Generic;
using System.Text;
namespace _055_JiCheng
{
class Enemy
{
private float hp;
private float speed;
public float HP
{
get { return hp; }
set { hp = value; }
}
public float Speed
{
get { return speed; }
set { speed = value; }
}
public void AI (){
Console.WriteLine("这里是公有AI方法");
}
public void Move() {
Console.WriteLine("这里时公有Move方法");
}
}
}
BOSSusing System;
using System.Collections.Generic;
using System.Text;
namespace _055_JiCheng
{
class Boss:Enemy
{
public void Attack()
{
Console.WriteLine("Boss在攻击");
}
}
}
type1enemy类using System;
using System.Collections.Generic;
using System.Text;
namespace _055_JiCheng
{
class Type1Enemy:Enemy
{
public void Attack()
{
Console.WriteLine("我在攻击");
}
}
}
type2enemy类using System;
using System.Collections.Generic;
using System.Text;
namespace _055_JiCheng
{
class Type2Enemy:Enemy
{
public void Attack()
{
Console.WriteLine("我在攻击中");
}
}
}
Mainusing System;
namespace _055_JiCheng
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("2022年通过C#基础语法继承介绍");
Boss boss = new Boss();
boss.AI();//继承:父类enemy中所有的数据成员和函数成员都继承到了子类中
boss.Attack();
Type1Enemy type1Enemy = new Type1Enemy();
type1Enemy.Attack();
Enemy enemy;
//父类声明的对象,可以使用子类去构造,子类声明的对象不可以使用父类构造
//enemy虽然使用父类进行声明,但是使用了子类构造,所以本质上是一个子类类型的,我们可以强制类型转换转换成子类类型
enemy = new Type2Enemy();
Type2Enemy type2Enemy = (Type2Enemy)enemy;
type2Enemy.Attack();
//Enemy enemy1 = new Enemy();
//一个对象是什么类型,主要看它通过什么构造的,这里enemy1使用了父类的构造函数,所以只有父类中的字段和方法,不能强制转换成子类
//Boss boss1 = (Boss)enemy1;
Console.ReadKey();
}
}
}
三、程序执行结果