Search code examples
javainterfacehierarchy

How do I minimize the amount of code for a hierarchy


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?


Solution

  • You can remove the following things from your code:

    1. implements IntFace from NClass declaration. Since NClass extends VClass, it implements IntFace as well.
    2. this.name = name; from NClass constructor. name is initialized in a superclass constructor
    3. value and getName methods from NClass. These methods are implemented in a superclass.
    4. 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.