2013-09-25 4 views
1

У меня есть несколько классов java, которые расширяют родительский класс. Из родительского класса я хочу вызвать несколько методов из дочернего класса. Кто-нибудь знает, как это сделать? СпасибоJava get child метод из родительского класса

Пример.

@MappedSuperclass 
public class LookupBaseEntity { 

    private List<VehicleConfiguration> vehicleConfigurations; 

    public VehicleConfiguration getVehicleConfiguration() { 
     return vehicleConfiguration; 
    } 

    public void setVehicleConfigurations(List<VehicleConfiguration> vehicleConfigurations) { 
     this.vehicleConfigurations = vehicleConfigurations; 
    } 

} 

Дочернего класс

@Entity 
public class VehicleYear extends LookupBaseEntity { 

    @OneToMany(mappedBy = "vehicleYear") 
    private List<VehicleConfiguration> vehicleConfigurations; 

    public VehicleYear() { 
    } 

    public List<VehicleConfiguration> getVehicleConfigurations() { 
     return vehicleConfigurations; 
    } 

    public void setVehicleConfigurations(List<VehicleConfiguration> vehicleConfigurations) { 
     this.vehicleConfigurations = vehicleConfigurations; 
    } 

} 
+0

Почему вы переопределяете методы родительского класса, но повторно используете одну и ту же реализацию? –

ответ

4

Вы никогда не будешь родитель непосредственно вызывать методы ребенка, как родитель не должен иметь никаких знаний или зависимость от ребенка. Родитель может косвенно вызывать методы ребенка через способность OOPS Java, чтобы, конечно, переопределять методы. Другими словами, если родитель вызывает один из своих нечетных нестатических методов, он будет вызывать метод текущего дочернего типа с помощью магии поисковых таблиц, которые разрешают вызовы виртуальных методов в Java.

+0

Я надеялся, что сможет добавить метод в родительский класс, проверяя, был ли пуст или нет список конфигурации, без необходимости добавлять эту проверку условий ко всем подклассам:/ –

+0

@George: снова родитель должен иметь нет знания или зависимости от его детей. Возможно, вы хотите использовать шаблон дизайна, чтобы облегчить ваш дизайн. –

+0

Теперь я знаю об этом, я просто подумал, что во время компиляции родитель и ребенок просто скомпилированы как один. Нет biggie, я выясню альтернативный способ справиться с этим. Спасибо –

Смежные вопросы