Assume, we have an abstract class A
and we want to force all subclasses to have a certain field. This is not possible in Java, because we can not define abstrac
I think opt.1 is the cleaner by far. A few getters and setters is not a big deal, and I doubt that many use cases would have more than just a few abstract "fields".
About opt.2, you forget that constructors are not inherited, and thus would require all sub classes constructors to be implemented in a way that takes a
into account.