You want to create an interface and let the "with code"-version implement that interface.
public interface IMyClass {
public String getSpecialVersion();
}
Implementation:
public class MyClass implements IMyClass {
public String name;
public MyClass(String name) {
this.name = name;
}
@Override
public String getSpecialVersion() {
return name + name;
}
}
You cannot define constructors in interfaces (and defining fields in interfaces is kind of unconventional) tho, so you might want to look at abstract classes for that, too:
public abstract class AbstractMyClass {
public String name;
public AbstractMyClass(String name) {
this.name = name;
}
public abstract String getSpecialVersion();
}
This class can be extended by a concrete class to add the method body:
public class MyClass extends AbstractMyClass {
public MyClass(String name) {
super(name);
}
@Override
public String getSpecialVersion() {
return name + name;
}
}