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

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

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

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

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

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

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

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设计最适合使用的地方就是游戏,定义好类,就可以实例化游戏对象,而继承将大大的减少代码量。

java继承与实现的_Java继承_概念与实现(一)相关推荐

  1. java继承 后的方法_Java 继承

    extends 继承 1.继承是什么,为什么继承 使用 extends 父类 子类继承父类,代码可以得到复用 使用继承机制可以做到方法的覆盖和多态机制 继承也是存在缺点的:耦合度高,父类修改,子类受牵 ...

  2. java继承机制实验报告_JAVA继承实验报告.doc

    JAVA继承实验报告 JAVA语言程序设计 实验报告 实验一 实验题目: 面 向 对 象 编 程 指导老师: 卢照 专业班级:计算机科学与技术系1106班 姓 名:*****) 2014年3月20日 ...

  3. java定义一个eat方法_Java继承概念详细解读

    继承与合成基本概念 继承:可以基于已经存在的类构造一个新类.继承已经存在的类就可以复用这些类的方法和域.在此基础上,可以添加新的方法和域,从而扩充了类的功能. 合成:在新类里创建原有的对象称为合成.这 ...

  4. java继承输出先后顺序_java继承时候类的运行顺序问题

    子类在继承父类后,创建子类对象会首先调用父类的构造函数,先运行父类的构造函数,然后再运行子类的构造函数,例如以下所看到的: class Father{ public Father(){ System. ...

  5. java thread类是抽象类_Java继承抽象类Thread,实现接口Runnable,倒计时,线程休眠,静态变量【诗书画唱】...

    使用继承抽象类Thread方式创建一个线程,打印1到100之间的奇数设置其名称为线程1 package thread; public class ji { public static void mai ...

  6. java定时器阻塞主线程_Java基础_死锁、线程组、定时器Timer

    一.死锁问题: 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 比如,线程一需要第一把所,此时锁处于空闲状态,给了 ...

  7. java设计篮球积分程序_java毕业设计_基于java的篮球赛事管理系统

    随着学校的规模不断扩大,学生人数急剧增加,有关学生的篮球赛事信息也成倍增长.面对庞大的信息量,有必要开发篮球比赛邀约系统来提高对篮球比赛邀约的管理工作的效率. 本篮球比赛邀约系统选用Windows作为 ...

  8. java人民币大小写转换函数_java开发_数字转换汉语中人民币的大写_完整版

    1 package com.b510.number2char;2 3 import java.math.BigDecimal;4 5 /**6 * 数字转换为汉语中人民币的大写 7 *8 * @aut ...

  9. java电影网站系统毕业设计_java毕业设计_电影推荐管理系统

    电影推荐系统的设计与实现mysql数据库版本源码: 超级管理员表创建语句如下: create table t_admin( id int primary key auto_increment comm ...

最新文章

  1. linux命令route
  2. Vxworks信号量分析
  3. LINUX的“脏奶牛”
  4. html 输入框防止自动记忆,网页输入框input填写内容自动记忆功能怎么去除
  5. 简单的Gradle Java插件自定义
  6. 数据结构:(5)算法分析基础
  7. 【HDU - 2570】迷瘴 (贪心,水题,排序,卡精度有坑)
  8. 函数指针与回调函数详解
  9. Shell—grep、sed、awk
  10. 消息中间件--RabbitMQ --- 消费端限流 -- 非常重要
  11. python 录入数据不重复_python Django批量导入不重复数据
  12. 阿里云、蚂蚁开源 Nydus——容器镜像加速服务
  13. Python内置函数sorted()从入门到精通
  14. 在linux中加固mysql_linux安全加固十六法则
  15. Object-Oriented Programming Summary Ⅱ
  16. Downward paths(数论,思维)
  17. 人生不该有如此压力,来吃下这口缓解焦虑的良药[50P]
  18. 基于STM32的RFID监控系统设计
  19. C++ Primer Plus(三)编程练习
  20. 30分钟搭建你的静态网站

热门文章

  1. 【时间之外】软件开发工作交接你会做吗?
  2. refind linux内核参数,Mac本Win10系统通过rEFInd启用CPU虚拟化及升级WSL2
  3. Integer类超详解
  4. php留言板设计代码,php制作留言板二[源码]
  5. Jupyterlab安装
  6. 百度地图 API 导航
  7. cocos2d android开发,Cocos2d android(一个钟点学会FlyppyBird开发)
  8. java给手机发短信_java给手机发送短信验证码
  9. 计算机二级ms公共课知识点,考证必学 | 计算机二级MS Office考试全攻略
  10. CS231n课程笔记:神经网络笔记3