代码之家  ›  专栏  ›  技术社区  ›  user2185021

我需要为toString和equals创建一个抽象方法吗?

  •  0
  • user2185021  · 技术社区  · 12 年前

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

    }

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

    1 回复  |  直到 12 年前
        1
  •  0
  •   Luis Daniel    12 年前

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

    你可以通过这本书来了解更多关于java面向对象编程的好原理 Principles of Object-Oriented Programming with Java