在上次,我根据思路设计的一个大概抽象类,里面有一个一个人有的大概属性,但只有属性的话也算不上一个人物,所以我们接下来继续编写。
思路;一个物种,不仅仅有属性还有种族和职业,种族我们可以做各种子类来通过继承和方法重写的方式来,区分各个种族的特点。而职业我们写一个静态方法来实现。
先在之前的Person类里添加两个抽象方法
public abstract int CarrerChoice();//种族选择和对象创建 public abstract int Ability();//各个种族的属性区分
创建一个人类类
public class Human extends Person{
public Human(String name, String sex,int num) {
super(name, sex,num);
}
public int CarrerChoice() {//方法重写
Scanner sc = new Scanner(System.in);
System.out.print("请选择你的职业(0.狂战士,1.圣骑士,2.刺客,3.猎手,4.牧师,5.巫师)");//人所能选择的职业
number = sc.nextInt();
System.out.println(number);
return number;
}
public int Ability() {// 方法重写
return number;
}
}
创建一个精灵类
public class Elf extends Person{
public Elf(String name, String sex,int num) {
super(name, sex,num);
}
public int CarrerChoice() {
Scanner sc = new Scanner(System.in);
System.out.println("请选择你的职业(0.狂战士,1.圣骑士,2.刺客,3.猎手,4.牧师,5.深林使者)");//精灵所能选择的职业
number = sc.nextInt();
if (number==5){
number=6;
}
return number;
}
public int Ability() {
agility=agility+5;
perceive=perceive+3;
physical=physical-3;
return number;
}
}
创建一个矮人类
public class Dwarf extends Person{
public Dwarf(String name, String sex,int num) {
super(name, sex,num);
}
public int CarrerChoice() {
Scanner sc = new Scanner(System.in);
System.out.println("请选择你的职业(0.狂战士,1.刺客,2.猎手,3.猛猪骑士,4.重甲战士)");//矮人所能选择的职业
number = sc.nextInt();
if (number==1){
number=2;
}else if (number==2){number=3;}//修正返回值
else if (number==3){number=8;}
else if (number==4){number=9;}
return number;
}
public int Ability() {
power=power+1;
agility=agility+1;
physical=physical+1;
wit=wit+1;
wisdom=wisdom+1;
perceive=perceive-3;
return number;
}
}
创建一个兽人类
public class Orcish extends Person{
public Orcish(String name, String sex,int num) {//有参构造
super(name, sex,num);
}
public int CarrerChoice() {//方法重写
Scanner sc = new Scanner(System.in);
System.out.print("请选择你的职业(0.狂战士,1.圣骑士,2.刺客,3.猎手,4.牧师,5.部落獠牙)");//兽人所能选择的职业
number = sc.nextInt();
if(number==5){
number=7;
}
return number;
}
public int Ability() {// 方法重写
power=power+1;
physical=physical+3;
wit=wit-3;
return number;
}
}
创建一个蜥蜴人类
public class Lizardmen extends Person{
public Lizardmen(String name, String sex,int num) {//有参构造
super(name, sex,num);
}
public int CarrerChoice() {//方法重写
Scanner sc = new Scanner(System.in);
System.out.print("请选择你的职业(0.狂战士,1.圣骑士,2.刺客,3.猎手,4.牧师,5.自然萨满)");//人所能选择的职业
number = sc.nextInt();
if (number==5){number=10;}
return number;
}
public int Ability() {// 方法重写
wit=wit-1;
perceive=perceive+3;
return number;
}
}
创建一个职业区别的类,里面使用静态方法来方便其他类来调用
public class OccupationalAttributes extends Person{
public int u=1;
public OccupationalAttributes(String name, String sex,int num) {
super(name, sex,num);
}
public static void zhiyesuxin(){
switch (number){
case 0:power=power+4;
physical=physical+3;
wit=wit-3;
wisdom=wisdom-3;
break;
case 1:
power=power+1;
physical=physical+1;
wit=wit+1;
agility=agility-2;
break;
case 2:
perceive=perceive+1;
agility=agility+2;
physical=physical-2;
break;
case 3:
perceive=perceive+2;
physical=physical-1;
break;
case 4:
power=power-2;
agility=agility-1;
physical=physical-2;
wit=wit+3;
wisdom=wisdom+3;
break;
case 5:
power=power-1;
physical=physical-1;
wit=wit+2;
wisdom=wisdom+1;
break;
case 6:power=power-1;
agility=agility-1;
physical=physical+2;
wisdom=wisdom+1;
break;
case 7:power=power+1;
agility=agility+1;
physical=physical+1;
wisdom=wisdom-1;
wit=wit-1;
break;
case 8:
agility=agility+1;
break;
case 9:
power=power+2;
physical=physical+2;
agility=agility-2;
wit=wit-1;
break;
case 10:
perceive=perceive+1;
}
}
public int CarrerChoice() {
return u ;
}
public int Ability() {
return u;}
}
这样我们就可以区分了每一个人物,就不再是只有属性的人了