Извините, вопрос не был правильно задан мной ранее. Я пытаюсь реализовать Factory Pattern. Лучший пример: это абстрактный класс Human с функцией create. На основе аргументов, переданных для создания, он решает, возвращать ли экземпляр своего подкласса Man или экземпляр подкласса Woman. Итак, вы называете create с помощью:
Human john = Human.create("Man");
Подклассы Мужчина и Женщина унаследованы от абстрактного класса Human и определены в том же файле, что и Human. Я не хочу, чтобы его можно было расширить на: Human lisa = new Human("woman") {};
Из основной программы. Спасибо!
EDIT:
Спасибо за помощь! Решение, которое я наконец-то использовал, состояло в том, чтобы сделать класс Human общедоступным и создать его функцию. Классы Human конструктор и Man и Woman объявлены защищенными от пакетов.