Mam do zrobienia takie zadanie:
Dodaj klasę abstrakcyjną Value, która będzie posiadać następujące metody:
public abstract String toString()
public abstract Value add(Value)
public abstract Value sub(Value)
public abstract Value mul(Value)
public abstract Value div(Value)
public abstract Value pow(Value)
public abstract boolean eq(Value)
public abstract boolean lte(Value)
public abstract boolean gte(Value)
public abstract boolean neq(Value)
public abstract boolean equals(Object other)
public abstract int hashCode()
public abstract Value create(String s) – tworzy konkretny obiekt ze stringa (wartość obiektu jest podana jako string)
zaimplementuj klasy dziedziczące po Value, implementujące konkretne wartości: Integer, Double, Float, String, DateTime.
I szczerze mówiąc nie bardzo wiem, jak to zrobić. Nie wiem, jak zrobić, żeby zwracały i przyjmowały za argument klasę.
Na razie mam coś takiego:
public abstract class Value {
public abstract String toString();
public abstract Value add(Value v);
public abstract Value sub(Value v);
public abstract Value eq(Value v);
public abstract Value lte(Value v);
public abstract Value gte(Value v);
public abstract Value neq(Value v);
public abstract boolean equals(Object other);
public abstract int hashCode();
public abstract B create(String s);
}
public class Integer extends Value {
int val;
public Integer(int a){
this.val=a;
}
@Override
public Value add(Value v) {
this.val = this.val + v.val;
return this;
}
}
}
Wiem, że metoda add w klasie Integer nie jest napisana poprawnie, ale nie mam pojęcia, jak to ma wyglądać.