【发布时间】:2015-03-16 13:41:23
【问题描述】:
抱歉,我知道这段代码可以在这里和那里显着缩短,我只是还没有真正了解继承的真正工作原理。
我的问题是,我该如何做到这一点,以便我的 machoke 和 machop 类中的方法不会打印出那些冗余的统计信息。
public class FP {
public void string() {
System.out.println("A Standard fighting pokemon's stats are:");
}
public double weight() {
double fWeight = 65;
System.out.println("Weight: " + fWeight);
return fWeight;
}
public double arm() {
double fArm = 21;
System.out.println("Arm Reach: " + fArm);
return fArm;
}
public double leg() {
double fLeg = 22;
System.out.println("Leg Reach: " +fLeg);
return fLeg;
}
public double punch() {
double fPunch = 40;
System.out.println("Punch Damage: " + fPunch);
return fPunch;
}
public double kick() {
double fKick = 35;
System.out.println("Kick Damage: " + fKick);
return fKick;
}
public double bodySlam() {
double fBodySlam = 150;
System.out.println("Body Slam damage: " + fBodySlam);
return fBodySlam;
}
}
public class Machop extends FP {
public double DMG_MULTI = 1.5;
public void string() {
System.out.println("Machop's stats are:");
}
public double bodySlam(){
double fBodySlam = super.bodySlam()*DMG_MULTI;
System.out.println("Body Slam damage: "+fBodySlam);
System.out.println();
return fBodySlam;
}
}
public class Machoke extends Machop {
public void string() {
System.out.println("Machoke's stats are:");
}
public double weight() {
double fWeight = super.weight()*1.75;
System.out.println("Weight: " + fWeight);
return 0;
}
public double arm() {
double fArm = super.arm()*1.75;
System.out.println("Arm Reach: " + fArm);
return fArm;
}
public double leg() {
double fLeg = super.leg()*1.75;
System.out.println("Leg Reach: " +fLeg);
return fLeg;
}
public double punch() {
double fPunch = super.punch()*1.75;
System.out.println("Punch Damage: " + fPunch);
return fPunch;
}
public double kick() {
double fKick = super.kick()*1.75;
System.out.println("Kick Damage: " + fKick);
return fKick;
}
public double bodySlam() {
double fBodySlam = super.bodySlam()*2;
System.out.println("Body Slam damage: " + fBodySlam);
return fBodySlam;
}
public double submission(){
double fSubmission = super.bodySlam()*1.5;
System.out.println("Submission damage: " + fSubmission);
System.out.println();
return 0;
}
}
public class Call {
public static void main(String args[]) {
FP fp = new FP();
fp.string();
fp.weight();
fp.arm();
fp.leg();
fp.punch();
fp.kick();
fp.bodySlam();
System.out.println();
Machop a = new Machop();
a.string();
a.weight();
a.arm();
a.leg();
a.punch();
a.kick();
a.bodySlam();
Machoke b = new Machoke();
b.string();
b.weight();
b.arm();
b.leg();
b.punch();
b.kick();
b.bodySlam();
b.submission();
}
}
输出:
标准战斗口袋妖怪的统计数据是:
重量:65.0
臂展:21.0
腿部伸展:22.0
冲击伤害:40.0
踢腿伤害:35.0
身体猛击伤害:150.0Machop 的统计数据是:
重量:65.0
臂展:21.0
腿部伸展:22.0
冲击伤害:40.0
踢腿伤害:35.0
身体猛击伤害:150.0
身体猛击伤害:225.0Machoke 的统计数据是:
重量:65.0
体重:113.75
臂展:21.0
臂展:36.75
腿部伸展:22.0
腿部伸展:38.5
冲击伤害:40.0
冲击伤害:70.0
踢腿伤害:35.0
踢腿伤害:61.25
身体猛击伤害:150.0
身体猛击伤害:225.0
身体猛击伤害:450.0
身体猛击伤害:150.0
身体猛击伤害:225.0
提交伤害:337.5
【问题讨论】:
-
这是一个真的长样本,这让我们很难找到问题所在。您能否给出一个简短但完整的示例,例如只需一个方法调用? (听起来输出是由于
super调用...如果您不希望您的方法写出输出,请不要这样做...) -
另外,请正确格式化您的代码示例,这样更容易阅读。
-
回答你的问题
"how do I make it so that the methods within my machoke and machop class don't print out those redundant stats.":删除超类FP的方法中的System.out.println。
标签: java inheritance super redundancy system.out