继承练习题,

主类:

public class Role {
// 共有属性
/**
* 姓名属性---由玩家输入,可更改
*/
private String name;
private int level;
private int hp;
private int ac;
private int dc;
private int gold;

public Role() {

}

/**
* 角色类常用构造方法
* @param name 玩家姓名
* @param level 角色等级
* @param hp 角色体力
* @param ac
* @param dc
* @param gold
*/
public Role(String name, int level, int hp, int ac, int dc, int gold) {
super();
this.name = name;
this.level = level;
this.hp = hp;
this.ac = ac;
this.dc = dc;
this.gold = gold;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

//最终方法:表示该方法不能被子类重写!
public final int getLevel() {
return level;
}

public void setLevel(int level) {
this.level = level;
}

public int getHp() {
return hp;
}

public void setHp(int hp) {
this.hp = hp;
}

public int getAc() {
return ac;
}

public void setAc(int ac) {
this.ac = ac;
}

public int getDc() {
return dc;
}

public void setDc(int dc) {
this.dc = dc;
}

public int getGold() {
return gold;
}

public void setGold(int gold) {
this.gold = gold;
}

// 共有行为
public void selfIndroduce() {

}

public void attack() {
System.out.println("玩家" + this.name + "执行攻击动作。");
}

private void defend() {
System.out.println("玩家" + this.name + "受到攻击,被动执行防御动作。");
}
}

医生类:

public class Doctor extends Role {
public final int HP_POWER = 8;
public final int AC_POWER = 1;
public final int DC_POWER = 2;

public Doctor(){

}

public Doctor(String name){
this.setName(name);
this.setLevel(1);
}

public Doctor(String name, int level, int gold){
this.setName(name);
this.setLevel(level);
this.setGold(gold);
}

@Override
public void setLevel(int level) {
// TODO Auto-generated method stub
super.setLevel(level);
this.setHp(level * this.HP_POWER);
this.setAc(level * this.AC_POWER);
this.setDc(level * this.DC_POWER);
}

@Override
public void selfIndroduce() {
// TODO Auto-generated method stub
System.out.println("老夫行医数十年,现在是等级为" + this.getLevel() + "的圣手,道号" + this.getName());
}

public void cure(){
if(this.getLevel()*this.HP_POWER - this.getHp() > 2 * this.getLevel()){
this.setHp(this.getHp() + 2 * this.getLevel());
}else{
this.setHp(this.getLevel() * this.HP_POWER);
}
}
//方法重载
public void cure(Thief th){
int maxAddHp = 2 * this.getLevel();
if(th.getLevel()*th.HP_POWER - th.getHp() > maxAddHp){
if(th.getGold() >= maxAddHp){
th.setHp(th.getHp() + maxAddHp);
this.setGold(this.getGold() + maxAddHp);
th.setGold(th.getGold() - maxAddHp);
}else{
System.out.println("金币不够");
}
}else{
int addGold = th.getLevel()*th.HP_POWER - th.getHp();
if(th.getGold() >= addGold){
th.setHp(this.getLevel() * this.HP_POWER);
this.setGold(this.getGold() + addGold);
th.setGold(th.getGold() - addGold);
}else{
System.out.println("金币不够");
}
}
}

}

小偷类:

public class Thief extends Role{
public final int HP_POWER = 10;
public final int AC_POWER = 3;
public final int DC_POWER = 1;

public Thief(){

}

public Thief(String name){
this.setName(name);
this.setLevel(1);
}

public Thief(String name, int level, int gold){
this.setName(name);
this.setLevel(level);
this.setGold(gold);
}

@Override
public void setLevel(int level) {
// TODO Auto-generated method stub
super.setLevel(level);
this.setHp(level * this.HP_POWER);
this.setAc(level * this.AC_POWER);
this.setDc(level * this.DC_POWER);
}

@Override
public void selfIndroduce() {
// TODO Auto-generated method stub
System.out.println("我是一个等级为" + this.getLevel() + "的盗贼,这条街都是我罩的!");
}

@Override
public String toString() {
// TODO Auto-generated method stub
return "角色名:"+this.getName()+";职业:盗贼;等级:"+this.getLevel()+";攻击力:"+this.getAc()+";防御力:"+this.getDc()+";金币:不给你看";
}

@Override
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
Thief th = (Thief)arg0;
if(th.getName().equals(this.getName()) &&
th.getLevel() == this.getLevel()){
return true;
}
return false;
}

public void steal(){
System.out.println("我要下手了.....");
if(this.getHp() <= 9){
System.out.println("今天太累了,算了,休息一下");
}else{
int random = (int)(Math.random() * 10);
if(random <= this.getLevel()){
this.setGold(this.getGold() + 12);
this.setHp(this.getHp() - 9);
System.out.println("得手了,走,喝酒去.....");
}else{
System.out.println("妈的,失手了,狗日的,反侦察能力挺强。");
}
}
}

}

时间: 2024-10-12 13:36:28

继承练习题,的相关文章

java 继承练习题8

按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个protected属性:矩形的宽width:矩形的高height. 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化: 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10. 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用 矩形的左上角坐标来标识,包含: 添加两

java 继承练习题2

创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). package com.hanqi; public class People { private double height; private double weight; public double getHeight() { return height; } public void setHeight(double height) { this.hei

java 继承练习题5

编写一个类A,该类创建的对象可以调用方法f输出小写的英文字母表.然 后再编写一个A类的子类B,要求子类B必须继承类A的方法f(不允许重写), 子类B创建的对象不仅可以调用方法f输出小写的英文字母表,而且可以调用子 类新增的方法g输出大写的英文字母表.最后 编写主类C,在主类的main方法 中测试类A与类B. public class A { public void f() { System.out.println("abcdefghijklmnopqrstuvwxyz"); } } p

继承练习题1.0

发红包 群主发普通红包.某群有多名成员,群主给成员发普通红包.普通红包的规则: 群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取. 成员领取红包后,保存到成员余额中. 请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作. 代码实现 定义父类 package demo11; public class User { private String name; // 姓名 private int money; // 余额,也就是当前用户拥有的钱数 public U

面向对象之继承 练习题

1.下面这段代码的输出结果将是什么?请解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Parent.x, Child1.x, Child2.x) ''' 1 1 1 ''' # 父类Parent名称空间有属性x,顾访问的是自己的x:子类Child1和Child2名称空间都没有属性x,故去父类Parent中找属性x,所以结果为.... Child1.x = 2 p

Java继承 练习题

第一题 /* 看程序写结果: A:成员变量 就近原则 B:this和super的问题 this访问本类的成员 super访问父类的成员 C:子类构造方法执行前默认先执行父类的无参构造方法 D:一个类的初始化过程 成员变量进行初始化 默认初始化 显示初始化 构造方法初始化     用参数去调用构造函数就是显式初始化,没有参数就是默认初始化,表现为直接声明对象和数组 所以执行父类无参构造方法前会先执行成员变量的初始化,public int num = 10;,再执行无参构造方法,同理,执行完父类无参

java 继承练习题3

写一个Java应用程序,该程序包括3个类: A类.B类和主类E.其中 类B是类A的子类,在子类B中新增了成员变量和成员方法,并且隐藏了父类 A的成员变量和重写了父类A的成员方法.在主类E的main方法中,创建类B 的对象并赋给父类A的对象a,使用上转型对象a来测试上转型对象的一些特性. public class A { public int a; public void a1() { System.out.println("这是A的一个方法"); } } package com.han

java 继承练习题4

编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息. (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不错嘛!会说话了!”的信息. (3)在People类中新增方法void think(),在think方

java 继承练习题1

package com.lianxi; public class Instrument { public void play() { System.out.println("弹奏乐器"); } } package com.lianxi; public class Wind extends Instrument { public void play() { System.out.println("弹奏Wind"); } public void play2() { Sy