I need to write abstract class, which looks like this.

```
public abstract class Value {

public abstract String toString();
public abstract Value add(Value v);
public abstract Value sub(Value v);
public abstract boolean eq(Value v);
public abstract boolean lte(Value v);
public abstract boolean gte(Value v);
public abstract boolean neq(Value v);
public abstract boolean equals(Object other);
public abstract int hashCode();
public abstract Value create(String s);

```

}

Now I need to make few classe, which inherit from that one. I started from Int class and implemented it like this:

```
public class Int extends Value {

int val;

public String toString() {
    String toStr = Integer.toString(val);
    return toStr;
}

public Int add(Value v) {
    Int result = new Int();
   if(v instanceof Int) {
        Int temp = (Int) v;
        result.val = val + temp.val;
    }

    return result;
}

public Int sub(Value v) {
    Int result = new Int();
    if(v instanceof Int) {
        Int temp = (Int) v;
        result.val = val - temp.val;
    }
    return result;
}

public boolean eq(Value o) {
    if(this == o) return true;
    if(this == null) return false;
    if(getClass() != o.getClass()) return false;
    Int other = (Int) o;
    return toString() == other.toString();
}

public boolean lte(Value v) {
    if(v instanceof Int) {
        Int temp = (Int) v;
        return this.val < temp.val;
    }
    return false;
}

public boolean gte(Value v) {
    if(v instanceof Int) { 
        Int temp = (Int) v;
        return this.val > temp.val;
    }
    return false;
}

public boolean neq(Value v) {
    if(v instanceof Int) {
        Int temp = (Int) v;
        return !eq(temp);
    }
    return true;
}

public boolean equals(Object o) {
    if(this == o) return true;
    if(this == null) return false;
    if(getClass() != o.getClass()) return false;
    Int other = (Int) o;
    return toString() == other.toString();
}

public int hashCode() {
    Integer hash = val;
    return hash.hashCode();
}

public Int create(String s) {
    val = Integer.parseInt(s);
    return this;
}

```

}

Everything is compiling and working, but I have no clue if my hashcode() function and equals() are good. Furthermore i want to use create() to make objects like this: 

```
getInstance().create("1234");

```

Is my method also sufficient?