java继承与实现的_Java继承_概念与实现(一)

继承就是子类继承父类行为,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法。

概念不容易理解,举个大家都熟悉的魔兽游戏例子,加深一下理解继承。f3238a08da18e374b85f4c599edacbad.png

通过上面的图,我们知道,游戏中有很多对象,会动的生物和不会动的建筑,会动的生物有英雄、自己造的兵。

我们知道所有的对象都有一个生命值,当生命值为零的时候,游戏对象就被删除了,那我们可以在游戏对象中设定一个属性,生命值和两个方法,生命增加和生命减少。

生物是能够移动的游戏对象,所以,生物可以继承于游戏对象。生物又有一些游戏对象不具有的属性和方法。作为游戏中的生物,都有名称和攻击的属性,例如一个生物是小鱼人,一个生物是大海龟,当然也可以是大法师或者山丘这样的英雄。另外生物都会移动和普通攻击,我们可以给生物增加这两个方法。

英雄除了生物的一般属性,我们还知道英雄是有名字和技能,这样,我们可以建一个英雄的类,继承生物。

总而言之,继承就是子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。

Java继承的方法:

使用extends关键字。

继承的代码:

package com.ws.basic;

class GameObject{

int life;

public GameObject(int life) {

super();

this.life = life;

}

public int life_reduce(int ai_reduce)

{

life = life - ai_reduce;

return life;

}

public int life_add(int ai_add)

{

life = life + ai_add;

return life;

}

}

class Creature extends GameObject {

String mc;

int attack;

public Creature(String mc, int attack,int life) {

super(life);

this.mc = mc;

this.attack = attack;

}

public void move() {

System.out.println(mc+"在移动!");

}

public void normal_attack() {

System.out.println(mc+"在普通攻击!");

}

}

class Hero extends Creature{

String name;

String skill;

public Hero(String name,String skill,String mc, int attack,int life) {

super(mc,attack,life);

this.name = name;

this.skill = skill;

}

public void skill_attack(){

System.out.println(mc + name + "用"+skill+"攻击!");

}

public void eat_food(int food){

life_add(food);

System.out.println(mc + name + "吃了"+food + "血,当前血量"+life);

}

}

public class testjc {

public static void main(String[] args) {

Hero heroDfs = new Hero("甘道夫","暴风雪","大法师",14,450);

Creature fishman=new Creature("小鱼人",5,200);

Creature turtle=new Creature("大海龟",20,2000);

heroDfs.skill_attack();

fishman.life_reduce(10);

System.out.println(fishman.mc + "当前血量"+fishman.life);

turtle.life_reduce(20);

System.out.println(turtle.mc + "当前血量"+turtle.life);

turtle.normal_attack();

fishman.normal_attack();

heroDfs.life_reduce(5);

System.out.println(heroDfs.name + "当前血量"+heroDfs.life);

heroDfs.life_reduce(5);

System.out.println(heroDfs.name + "当前血量"+heroDfs.life);

}

}

执行的结果:

大法师甘道夫用暴风雪攻击!

小鱼人当前血量190

大海龟当前血量1980

大海龟在普通攻击!

小鱼人在普通攻击!

甘道夫当前血量445

甘道夫当前血量440

测试模拟了大法师甘道夫用暴风雪攻击小鱼人和大海龟,小鱼人和大海龟反击大法师的行为。oo设计最适合使用的地方就是游戏,定义好类,就可以实例化游戏对象,而继承将大大的减少代码量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值