Извините, я знаю, что этот код может быть значительно сокращен здесь и там, я просто не получил, как наследование действительно работает.Что случилось с тем, как я использую Inheritance в Java?
Мой вопрос: как мне сделать так, чтобы методы в моем классе 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();
}
}
Выход:
Стандартная статистика боевых действий Pokemon являются:
Вес: 65,0
Arm Reach: 21,0
Leg Reach: 22,0
Удар повреждения: 40,0
удар повреждения: 35,0
Ущерб от повреждения корпуса: 150,0статистика Machop являются:
Вес: 65,0
Arm Reach: 21,0
Leg Reach: 22,0
Удар повреждения: 40,0
удар повреждения: 35,0
Body Slam повреждения: 150,0
Body Slam повреждения: 225,0статистика Machoke являются:
Вес: 65,0
Вес: 113,75
Arm Reach: 21,0
Arm Reach: 36,75
Leg Reach: 22,0
Leg Reach: 38,5
Удар повреждения: 40,0
Удар повреждения: 70,0
удар повреждения: 35,0
удар повреждения: 61,25
Body Slam повреждения: 150,0
Body Slam повреждения: 225,0
Body Slam повреждения: 450,0
Body Slam повреждения: 150,0
Body Slam повреждения: 225,0
повреждение Подача: 337,5
Это * действительно * длинный образец, что затрудняет нам поиск проблемы. Не могли бы вы дать * короткий *, но полный пример, например. просто с помощью одного вызова метода? (Похоже, что результат вызван 'супер' вызовами ... если вы не хотите, чтобы ваши методы записывали выходные данные, просто не делайте этого ...) –
Также, пожалуйста, правильно отформатируйте свой пример кода, он делает его гораздо легче читать. – Warkst
Чтобы ответить на ваш вопрос '', как это сделать, чтобы методы в моем классе machoke и machop не распечатывали эти избыточные статистические данные. "': Удалить 'System.out.println' в методах суперкласса 'FP'. – SubOptimal