0

所以我的程序正在创建四边形,我被告知要为 findArea() 和 findPerimeter() 创建抽象方法,但我需要它们用于 toString() 和 boolean equals 方法吗?

abstract public class Quad {
private int s; //Base top
public Quad(){
    s = 1;
}
Quad(int s){
    this.s = s;
}
abstract public int findPerimeter();
abstract public int findArea();
abstract public String toString();
abstract public boolean equals(Object o);
public int getS() {
    return s;
}
public void setS(int s){
    this.s = s;
}

}

class Square extends Quad{
private static int numSquares = 0;
private int s, iD;
public Square(){
    super();
    s = super.getS();
    numSquares ++;
    iD = numSquares;
}
public Square(int s){
    super(s);
    s = super.getS();
    numSquares ++;
    iD = numSquares;
}
public int getNumSquares(){
    return numSquares;
}
public int getID(){
    return iD;
}
public void setID(int iD){
    this.iD = iD;
}
@Override
public int findArea(){
    return (getS()*getS());
}
@Override
public int findPerimeter() {
    return (getS())*4; 
}
public String toString(){
    return "Side length is "+getS()+", Area is "+findArea()+" and Perimeter is "+findPerimeter();
}
public void decreaseNum(){
    numSquares --;
}
public boolean equals(Object s){
    if (s instanceof Square){
        Square temp = (Square)s;
        if(getID() == (temp.getID())){
            return true;
        }
    }
    return false;
}

}

这是代码,感谢您的阅读和帮助!

4

1 回答 1

0

您应该知道,在 Java 中,所有类都继承自 Object,而后者同时实现 toString 和 equals 方法,因此在您的任何类中都可以重新定义这些方法的行为,而无需在父类中声明为抽象(四)。

你可以得到这本书,以了解更多关于使用 java 进行面向对象编程的良好原则 使用 Java进行面向对象编程的原则

于 2013-04-25T02:45:04.247 回答