如何使用 Java 继承对平方答案进行立方
How to cube a squared answer using Java inheritance
我们编程的方向 activity 是这样的(大致翻译成英文):
说明:编写一个程序来计算用户输入数字的平方和立方。创建classes,显示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:
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?
您可以像下面这样创建您的 类。 (装饰器设计模式)
public interface Operation {
public int getResult(int input);
}
public class Square implements Operation{
public int getResult(int input) {
return input*input;
}
}
class Cube implements Operation {
private Operation operation;
public Cube(Operation operation){
this.operation = operation;
}
public int getResult(int input) {
return operation.getResult(input) * input;
}
}
然后在上面调用:
Operation square= new Square();
Cube cube= new Cube(square);
cube.getResult(input);
或者更简单一点:
public class Square {
// Value is protected, so you can also see it in the Cube class.
protected int val;
public Square(int val) {
this.val = val;
}
public int calculate() {
return val*val;
}
}
public class Cube extends Square {
public Cube(int val) {
super(val);
}
@Override
public int calculate() {
super.calculate()*val;
}
}
无论哪种方式,我认为这是对面向对象编程和继承的误解,因为您使用两个 类 进行一些非常基本的计算。这些不是任何对象,它们以应使用 OOP 的方式共享属性。
我们编程的方向 activity 是这样的(大致翻译成英文):
说明:编写一个程序来计算用户输入数字的平方和立方。创建classes,显示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:
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?
您可以像下面这样创建您的 类。 (装饰器设计模式)
public interface Operation {
public int getResult(int input);
}
public class Square implements Operation{
public int getResult(int input) {
return input*input;
}
}
class Cube implements Operation {
private Operation operation;
public Cube(Operation operation){
this.operation = operation;
}
public int getResult(int input) {
return operation.getResult(input) * input;
}
}
然后在上面调用:
Operation square= new Square();
Cube cube= new Cube(square);
cube.getResult(input);
或者更简单一点:
public class Square {
// Value is protected, so you can also see it in the Cube class.
protected int val;
public Square(int val) {
this.val = val;
}
public int calculate() {
return val*val;
}
}
public class Cube extends Square {
public Cube(int val) {
super(val);
}
@Override
public int calculate() {
super.calculate()*val;
}
}
无论哪种方式,我认为这是对面向对象编程和继承的误解,因为您使用两个 类 进行一些非常基本的计算。这些不是任何对象,它们以应使用 OOP 的方式共享属性。