java设计一个游戏人物抽象类Role,该类有两个字段,一个方法具体如下图,
游戏物抽象类
public abstract class Role {
protected int strongth; // 力量
protected int intelligence; // 智力
abstract double attack(); //攻击
}
战士类
public class Warrolr extends Role {
public Warrolr(int strongth, int intelligence) {
this.strongth = strongth;
this.intelligence = intelligence;
}
@Override
double attack() {
return strongth * 1.5;
}
}
法师类
public class Mage extends Role{
public Mage(int strongth, int intelligence) {
this.strongth = strongth;
this.intelligence = intelligence;
}
@Override
double attack() {
return intelligence * 2;
}
}
测试类
public class Demo {
public static void main(String[] args) {
Warrolr w = new Warrolr(100, 60);
Mage m = new Mage(60, 100);
System.out.println("战士攻击造成的伤害:" + w.attack());
System.out.println("法师攻击造成的伤害:" + m.attack());
}
}
测试结果:
战士攻击造成的伤害:150.0
法师攻击造成的伤害:200.0
一个角色对应多个权限,创建一个权限的集合,以便查询角色对应的权限
package enity;
import java.util.List;
public class Role {
private Integer roleid;
private String rolename;
//一个角色对应多个权限,创建一个权限的集合,以便查询角色对应的权限
private List<Privilege> privileges;
public Integer getRoleid() {
return roleid;
}
public void setRoleid(Integer roleid) {
this.roleid = roleid;
}
public String getRolename() {
return rolename;
}
public void setRolename(String rolename) {
this.rolename = rolename;
}
public List<Privilege> getPrivileges() {
return privileges;
}
public void setPrivileges(List<Privilege> privileges) {
this.privileges = privileges;
}
public Role(Integer roleid, String rolename, List<Privilege> privileges) {
super();
this.roleid = roleid;
this.rolename = rolename;
this.privileges = privileges;
}
public Role() {
super();
}
@Override
public String toString() {
return "Role [roleid=" + roleid + ", rolename=" + rolename+ ", privileges=" + privileges + "]";
}
}
根据参考资料和要求,设计一个抽象类Role,包含姓名(name),年龄(age),性别(sex)等字段,以及play()抽象方法。角色类Role应该尽量隐藏所有变量(能够私有就私有,能够保护就不要公有),并通过getXXX()和setXXX()方法对变量进行读写。同样提供至少两个构造方法,并体现出this的多种用法。Employee类派生自Role类,增加salary成员变量和静态成员变量“职工编号(id)”,扩展两个构造方法,同时覆盖play()方法,并提供一个final sing()方法。Manager类继承自Employee类,增加一个final成员变量vehicle,并进行测试。
abstract class Role {
private String name;
protected int age;
private String sex;
public Role() {
System.out.println("Role 的无参构造");
}
public Role(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
}
abstract void play();
}
class Employee extends Role {
private int salary;
private static int id;
public Employee() {
System.out.println("Employee的无参构造");
}
public Employee(String name, int age, String sex, int salary, int id) {
super(name, age, sex);
this.salary = salary;
Employee.id = id;
}
public final void Sing() {
System.out.println(getName() + "在开心的唱歌!!!");
}
void play() {
System.out.println(getName() + "在玩游戏");
}
public void setSalary(int salary) {
this.salary = salary;
}
public int getSalary() {
return salary;
}
}
class Manager extends Employee {
final String vehicle = "benchi";
}
public class Test {
public static void main(String[] args) {
Manager mana = new Manager();
Employee empl1 = new Employee();
System.out.println(mana.vehicle);
Employee empl2 = new Employee("张三", 15, "男", 11111, 007);
empl2.play();
empl2.Sing();
}
}