This is for learning. I have an interface that is implemented by 2 classes, and I am supposed to reduce the amount of code I use in order to keep things more clean and less messy. Currently, the code looks like this:
public abstract class VClass implements IntFace {
protected String name;
public VClass(String name) {
this.name = name;
}
public int value (SClass sc) {//comes from a diff class
return sc.lookup(name);
}
public String getName() {
return name;
}
@Override
public String toString() {
return getName();
}
}
public abstract class NClass extends VClass implements IntFace {
public Number(String name) {
super(name);
this.name = name;
}
public int value (SClass sc) {
return sc.lookup(name);
}
public String getName() {
return name;
}
@Override
public String toString() {
return getName();
}
}
public interface IntFace {
public int value (SClass sc);
public String toString (int num);
}
can this code be more condensed?
You can remove the following things from your code:
implements IntFace
from NClass
declaration. Since NClass extends VClass
, it implements IntFace
as well.this.name = name;
from NClass
constructor. name
is initialized in a superclass constructorvalue
and getName
methods from NClass
. These methods are implemented in a superclass.public
modifier from interface methods declaration. Methods in interfaces are public
by default.Now you can also make name
field private
since it's no longer used in a NClass
.