【发布时间】:2021-08-19 06:13:07
【问题描述】:
我们编程活动的方向是这样的(大致翻译成英文):
方向:编写一个程序,计算用户输入数字的平方和立方。创建显示 Java 的继承和封装特性的类。创建您自己的声明。
到目前为止,我已经完成了平方数。这是我的代码:
import java.util.*;
public class Square {
protected int square;
public int getSquare() {
return square;
}
public void setSquare (int numberToSquare) {
square = numberToSquare*numberToSquare;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Square number2 = new Square();
Cube number3 = new Cube();
System.out.println("Enter number to square and cube: ");
int userNumber = input.nextInt();
number2.setSquare(userNumber);
number3.setCube(userNumber);
System.out.println("The square of " + userNumber + " is " + number2.getSquare());
System.out.println("The cube of " + userNumber + " is " + number3.getCube());
}
}
这是我的 Cube 类:
class Cube extends Square {
protected int cube;
public int getCube() {
return cube;
}
public void setCube (int numberToCube){
cube = getSquare()*numberToCube;
}
}
我知道我的 setCube 错了,但这就是我想问的问题:我是否可以使用平方答案,这样我就可以避免键入 numberToCube x numberToCube x numberToCube? p>
【问题讨论】:
-
这是一个奇怪的分配,但很可能您应该使用构造函数将基数 (
userNumber) 保存在基类中,并使用getSquare()和getCube()方法。 -
回答你的问题,你试过了吗?
-
@ScaryWombat 是的,我尝试运行它,平方输出没问题,但立方体答案只输出“___ 的立方体为 0”
-
我想你只需要调用 number3.setSquare(userNumber)
-
Cube.setCube()需要在乘法前调用super.setSquare(numberToCube)。但我认为您被要求提供一个在Cube中覆盖的int getResult()方法。而且我也不会有那些setXXX()方法:我会在构造函数中提供值并在那里或getValue()方法中计算值。
标签: java oop inheritance encapsulation