Как я могу получить дочерний класс в качестве параметра, где ожидается родительский класс, но не позволить пользователю создать экземпляр родительского класса? - PullRequest
0 голосов
/ 06 января 2020

Я новичок в java программировании, и мне нужна помощь в выяснении этого, вот код, иллюстрирующий мой вопрос, у меня есть родительский класс Person, из которого я создаю 3 дочерних класса, Player, Arbiter и Trainer, и затем я могу передать любой из этих 3 классов в качестве параметра другому классу, Game, ожидая объект класса Person

public class Game {

    private Person member;

    public Game (Person member){
        this.member = new Person();
        this.member = member;
    }
}

Мой вопрос кроме создания нескольких конструкторов, как вы могли бы добиться аналогичного результата, делая абстрактный класс родительским, чтобы запретить пользователю создавать его экземпляры и, таким образом, добиться большей инкапсуляции?

1 Ответ

0 голосов
/ 06 января 2020

сделайте свой Person класс абстрактным.

Подробнее о том, что это значит, вы можете прочитать здесь: https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

Но базовая точка c что абстрактные классы не могут быть созданы, но могут быть разделены на подклассы.

...