C#继承实战:关于类的继承和子类构造函数的相关习题

**一,定义一个Animal类,拥有Name、MaxAge(最大寿命)、NowAge(当前的年龄,生成对象时随机设置)、Sex,

一个Dog类,继承自Animal类,拥有Speak方法,发出汪汪汪的声音 ,一个Cat类,继承自Animal类,拥有Speak方法,发出喵喵喵的声音**

代码实现:

namespace Zy
{
internal class Program
{
static void Main(string\[\] args)
{

Animal a1 = new Animal();
a1.Name = "余伟";
a1.NowAge = 20;
Console.WriteLine(a1.Name+a1.NowAge);

Dog d1 = new Dog();
d1.Name = "哮天犬";
d1.NowAge = 20;
d1.MaxAge = 30;
d1.Sex = "公";
Console.WriteLine(d1.Name+" "+d1.NowAge+" "+d1.MaxAge+" "+d1.Sex);
d1.Speak();

Cat c1 = new Cat();
c1.Name = "小猫咪";
c1.NowAge = 10;
c1.Sex = "母";
c1.MaxAge = 30;
Console.WriteLine(c1.Name+ " " + c1.NowAge+ " " + c1.MaxAge+ " " + c1.Sex);

c1.Speak1();

Console.ReadKey();
}
}
class Animal
{
public string Name { get; set; }
public int MaxAge { get; set; }
public int NowAge { get; set; }
public string Sex { get; set; }
public Animal()
{

}

}
class Dog : Animal
{
public void Speak()
{
Console.WriteLine("发出汪汪汪的声音 ");
}
}
class Cat : Animal
{
public void Speak1()
{
Console.WriteLine("发出喵喵的声音 ");
}

}
}

二, 一个怪物类,拥有HP血量、name名字、防御力,发动攻击的方法、被攻击的方法(接收被攻击的数值,减去自身血量)

一个Boos类,继承怪物类,拥有发大招的能力

namespace Yv
{
internal class Program
{
static void Main(string\[\] args)
{

//创建俩个怪物对象
Monster m1 = new Monster(100, "阿萨拉小兵", 10, 20);
Monster m2 = new Monster(200, "阿萨拉盾兵", 20, 50);

//怪物发动攻击
m1.发动攻击(); // 攻击力20
m2.发动攻击();// 50

//m1被m2揍了 传递m2的攻击力 50
m1.被揍(m2.Att);
m1.被揍(m2.Att);
m1.被揍(m2.Att);
m1.被揍(m2.Att);

Boss SYD = new Boss(5000, "赛伊德", 100, 100);
SYD.发动攻击();
m2.被揍(SYD.Att);
m2.被揍(SYD.Att);
m2.被揍(SYD.Att);
SYD.被揍(m1.Att);
SYD.Skil();

Console.ReadKey();
}
}
class Monster
{
public int HP { get; set; } //血量
public string Name { get; set; } // 名称
public int Def { get; set; } //防御

public int Att { get; set; }// 攻击力

public Monster()
{

}
public Monster(int h, string n, int d, int a) //血量 名称 防御 攻击力
{
HP = h;
Name = n;
Def = d;
Att = a;
}
public void 发动攻击()
{
Console.WriteLine(this.Name + "发动了攻击,攻击力是:" + this.Att);
}

public void 被揍(int a)//传递一个攻击力
{

//if (HP < 0) // 怪物的血量0
//{

// return;
//}
if (a - Def < 0) //伤害小于0
{
Console.WriteLine("Miss");
return;
}
//当前剩余血量
//a - Def 攻击力-减去防御力 = 实际伤害
HP -= (a - Def);
if (HP < 0) // 剩余的血量为0
{

Console.WriteLine("血量为0 已经嘎了 不要在鞭尸了");
}
else
{
Console.WriteLine("造成伤害{0},剩余{1}血量", a - Def, HP);
}

}
}
class Boss : Monster
{

public Boss(int h, string n, int d, int a) : base(h, n, d, a)//血量 名称 防御 攻击力
{

}

public void Skil()
{
Console.WriteLine(this.Name + "发出一个技能: 龙卷风摧毁停车场");
}

}

}

运行结果:

相关推荐
mayaairi18 分钟前
JS BOM完全指南(二):事件轮询、三大尺寸家族与浏览器对象详解
开发语言·javascript·ecmascript
technology_x25 分钟前
液冷超充站设备厂家哪家好?2026年功率与散热对比
java·开发语言
SurpriseDPD29 分钟前
bpftrace‑tasks 工具代码分析
开发语言·python
千谦阙听44 分钟前
C++篇:类和对象(上)
开发语言·c++
许彰午1 小时前
07-SqlBuilder六法
java·开发语言·低代码·架构
BS30813_vx1 小时前
【编号:01652】Spring Boot村务管理系统:财务公开、党建活动与计生服务一体化实战
开发语言·python
Jul1en_1 小时前
【Java 脚手架】封装通用工具类-3
java·开发语言·redis·缓存·ai·bootstrap·rabbitmq
学习星球1 小时前
2026年AI Agent全栈开发实战——从Prompt到Production
开发语言·人工智能·prompt
Fluxart.ai2 小时前
商品多角度图怎么做?Flux Art 从白底图到规格图、包装图的 10 步教程
开发语言·前端·javascript