EventEmitter. В нем создайте необходимые методы: subscribe отметьте как public, а addReaction и fire — protected.Person от EventEmitter: public class Person extends EventEmitter.subscribe, остальные остаются им не доступны.EventEmitter все равно смогут вызывать скрытые методы. Ибо в Java нельзя одновременно разрешить доступ для sub-классов и запретить для пакета: access control.