快捷搜索:  汽车  科技

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方法");

}

}

}

BOSS

using 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("我在攻击中");

}

}

}

Main

using 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();

}

}

}

三、程序执行结果

c语言基础知识总结文库(基础语法继承介绍)(1)

猜您喜欢: