本人刚学java有个小问题 麻烦大家了???

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:44:16
父类 XXX=new 子类( )

它跟 子类 XXX=new 子类( ) 作用一样吗?为什么非要这样写??意思是什么??
希望能用一点通俗的语言

谢谢 了

我认为,你问这个问题,这说明你已经掌握了java继承的代码书写,但是还没有明白继承的真正意义。

首先你要知道,计算机软件是为了解决现实世界中的问题,要解决问题首先要准确的表达问题的情况,高级语言就是为了最大限度的描述现实世界中事物之间的关系的。那么继承是为了描述一个什么关系呢?

假设我要编写一个游戏程序,勇者斗恶龙。大致设计是这样的:主角是一个英雄,他要过5道关去救一个美女,每道关都有不同厉害程度的很多的龙,最后一关有一个变异的巨龙,所有的龙都可以进行基本的攻击,但是攻击的方式却有细微的差别,最后一关的巨龙还有独门绝技--吐火球

这时,程序员常规的做法应该是这样:
生物抽象类:只有名称,移动速度、活动范围等属性,有画外形、出现、死亡等抽象方法
人抽象类(继承自生物类):添加一些常量
英雄类(继承自人类):添加攻击、防御、使用道具等特有属性和方法,实现抽象方法
美女类(继承自人类):添加求救等特有属性和方法,实现抽象方法
Dragon龙类(继承自生物类):添加血量、攻击力、防御力、攻击等属性和抽象方法
幼龙类(继承自龙类):给继承来的属性赋值,实现抽象方法
小龙类(继承自龙类):给继承来的属性赋值,实现抽象方法
大龙类(继承自龙类):给继承来的属性赋值,实现抽象方法
巨龙类(继承自龙类):给继承来的属性赋值,实现抽象方法,并添加一些特有属性和方法

有了以上的设计,在主角对象和各关龙对象互相攻击的AI时,就可以直接使用上级类引用,如英雄受到攻击时的事件方法:
bool underAttack(Dragon dragon)
{
//英雄的生命等于现在的生命减去怪物的攻击力去掉自己的防御力
life = life - (dragon.attackPower - this.defancePower);

return life > 0;//返回是否还活着
}

在游戏中,不会去创建龙对象,创建的都是龙类的子类对象:幼龙,小龙,大龙,巨龙对象等,所以真正触发了这个事件调用这个方法