【问题标题】:Do I need to create an abstract method for toString and equals?我需要为 toString 和 equals 创建一个抽象方法吗?
【发布时间】:2013-04-25 01:24:36
【问题描述】:

所以我的程序正在创建四边形,我被告知要为 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;
}

}

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

【问题讨论】:

    标签: methods equals abstract tostring


    【解决方案1】:

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

    您可以获取本书以了解更多关于使用 java Principles of Object-Oriented Programming with Java 进行面向对象编程的良好原则

    【讨论】:

    • 谢谢!很多答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2013-02-02
    • 2017-04-10
    • 2023-03-08
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多