Так что я смотрю на этих соответствующих классов (и подклассы) ...Что такое (есть?) Цель, заключающаяся в объявлении метода дважды, когда родительский класс не изменяет никаких свойств?
public class Control{
public Control(){}
public Control(String name, String type, ContainerControl owner){
//do stuff here
}
}
public class ContainerControl extends Control{
public ContainerControl() { super(); }
public ContainerControl(String name, String type, ContainerControl owner)
{
super(name, type, owner);
controls = new Controls(); //exists somewhere else
}
}
public class SSTab extends ContainerControl{
public SSTab(){ super(); }
public SSTab(String name, String value, ContainerControl owner)
{
super(name, value, owner);
}
}
Я смущен о цели позади объявлений метода без параметров, которые используют супер(). Из проведенных мной исследований я был бы склонен полагать, что они необходимы для перегрузки методов свойствами из соответствующих родительских классов или переопределения. Тем не менее, поскольку они называют super(), который, по моему мнению, найдет метод с параметром в суперклассе (который снова делает то же самое), я не вижу, что действительно может измениться.
В результате участия в огромном проекте с огромным количеством подклассов я не могу просто удалить первые объявления метода из каждого класса и запустить, чтобы увидеть, что происходит (чтобы определить, есть ли цель), и я не может найти ссылку, чтобы объяснить, что на самом деле делают эти объявления начального метода, которые используют супер.
Любая помощь или ссылки будут невероятно оценены!
Развейте вопрос:
Почему не SSTab просто быть инициализирована с параметрами с CControl, которые могут быть инициализированы с параметрами с контролем? Я не вижу, как переменные конструктора без параметров необходимы для инициализации типов объектов, когда есть переменные-конструкторы с параметрами, которые в любом случае называют super.
Конструкторы - это не объявления методов. –