Что делает super(name), вызывает конструктор класса Thread? для чего ? почему нужно так?
Alex
26 уровень
Что делает super(name) ??
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
CrevanSenior Помидор в Своих Фантазиях
21 марта 2022, 06:21
super() вызывает конструктор родительского класса. Прежде чем создать экземпляр класса должен создаться экземпляр класса родителя. Таким образом super() вызывается в конструкторе любого класса, т.к. все классы унаследованы от Object. Это происходит неявным образом в случае когда в родительском классе определен "конструктор по умолчанию". Если такого конструктора нет, то программист должен явным образом в первой(обязательно) строке конструктора своего класса вызвать существующий super конструктор. После чего будет "запущен" конструктор родительского класса. Если родительский класс наследует какой-то другой класс, то при вызове его конструктора будет вызван конструктор его родителя. И так будет происходить цепочка вызовов вплоть до класса Object. После того как сконструируется объект класса Object управление вернется в конструктор класса вызвавшего его и произойдет конструирование этого класса и так далее по цепочке вниз до нашего класса.
0
Alex
21 марта 2022, 12:22
но мы же не всегда так делаем? почему именно в этом случае нам нужно вызвать конструктор родителя класса Politician? то есть конструктор класса Thread?
0
CrevanSenior Помидор в Своих Фантазиях
21 марта 2022, 19:53
Посмотрите внимательно на класс Politician. В каком поле Класса может храниться переменная name. Попробуйте закоментировать эту строку в конструкторе и посмотрите, что измениться.
0