// CentredBall class:
2 // Class attribute: quantity - number of balls created
3 // Instance attributes: colour, radius, centre
4 import java.awt.*;
5
6 class CentredBall {
7
8 /************** Data members **********************/
9 private static int quantity = 0;
10
11 private String colour;
12 private double radius;
13 private Point centre;
14 private int xCoord, yCoord;
15
16 /************** Constructors **********************/
17 // Default constructor creates a yellow, radius 10.0 ball centred at origin (0,0)
18 public CentredBall() {
19 this.colour = "yellow";
20 this.radius = 10.0;
21 }
22
23 public CentredBall(String colour, double radius, Point centre) {
24 setColour(colour);
25 setRadius(radius);
26 setCentre(xCoord, yCoord);
27 quantity++;
28 }
29
30 public CentredBall(String colour, double radius, int xCoord, int yCoord) {
31 setColour(colour);
32 setRadius(radius);
33 setxCoord(xCoord);
34 setyCoord(yCoord);
35 quantity++;
36 }
37
38 /**************** Accessors ***********************/
39 public static int getQuantity() {
40 return quantity;
41 }
42 public String getColour() {
43 return this.colour;
44 }
45 public double getRadius() {
46 return this.radius;
47 }
48 public Point getCentre() {
49 return this.centre;
50 }
51 public int getxCoord() {
52 return this.xCoord;
53 }
54 public int getyCoord() {
55 return this.yCoord;
56 }
57
58 /**************** Mutators ************************/
59 public void setColour(String colour) {
60 this.colour = colour;
61 }
62 public void setRadius(double radius) {
63 this.radius = radius;
64 }
65 public void setCentre(Point centre) {
66 this.centre = centre;
67 }
68 public void setxCoord(int xCoord) {
69 this.xCoord = xCoord;
70 }
71 public void setyCoord(int yCoord) {
72 this.yCoord = yCoord;
73 }
74
75 /***************** Overriding methods ******************/
76 // Overriding toString() method
77 public String toString() {
78 return "[" + getColour() + ", " + getRadius() + ", " + getxCoord() + ", " + getyCoord() + "]";
79 }
80
81 // Overriding equals() method
82 public boolean equals(Object obj) {
83 if (obj instanceof CentredBall) {
84 CentredBall ball = (CentredBall) obj;
85 return this.getColour().equals(ball.getColour()) &&
86 this.getRadius() == ball.getRadius() &&
87 this.getxCoord() == ball.getxCoord() &&
88 this.getyCoord() == ball.getyCoord();
89 }
90 else
91 return false;
92 }
我一直收到此错误
CentredBall.java:26: error: method setCentre in class CentredBall cannot be applied to given types;
setCentre(xCoord, yCoord);
^
required: Point
found: int,int
reason: actual and formal argument lists differ in length
1 error
我有几个问题。请帮助。
为什么默认构造函数在原点没有中心参数?我试过这个(“黄色”,10.0,(0,0));但它不起作用
覆盖方法的用途是什么?我创建的toString
和equals
覆盖方法是否有任何错误?
答案 0 :(得分:1)
使用参数中的Point centre
或创建一个新的点Point p = new Point(xCoord, yCoord)
答案 1 :(得分:0)
您收到错误是因为setCentre()
方法需要Point而不是2 ints:
setCentre(new Point(xCoord, yCoord));
也适用于:
1.你为什么不为原点添加另一个构造函数:
public CentredBall(String colour, double radius) {
setCentre(0,0);
2.你写过这个,但你不知道为什么写这个?您可以覆盖它们,使它们按照您希望的方式运行对象。
答案 2 :(得分:0)
您正在尝试传递xCoord,yCoord来代替Point类型的参数。而是通过
new Point(xCoord, yCoord)
这构造了该方法可以处理的Point对象。