#programowanie #java Jest jakieś łopatologiczne wytłumaczenie zastosowania super() w klasie nie dziedziczącej po żadnej innej (pomijając Object)? Przykład z Oracle : program Convert jest tam plik Unit.java z fragmentem: `public class Unit {
@Wozyack: no ja rozumiem na klasie dziedziczącej... ale w taki sposób pierwszy raz się spotkałem. Tylko za poważne źródło to stosuje, więc co poza dodatkową linią kodu nam to da? +1lvl do programowania?
@kazoo: Nic nie da, jest to bez sensu. Ta klasa dziedziczy po klasie Object. W przypadku braku wywołania super() w konstruktorze klasy potomnej kompilator Javy sam automatycznie doda wywołanie do bezargumentowego konstruktora klasy Object, więc nie widzę sensu istnienia jawnego wywołania tej metody.
No też tak mi się wydaje. Nigdzie nie znalazłem materiałów tłumaczących to posunięcie. Jedynie co przychodzi na myśl to może to się przydać na teście certyfikacyjnym Oracle'a jako kolejne z kluczowych pytań potwierdzających umiejętność programowania (czyt. kompilatorowania) ;)
@kazoo: Jeśli wywołuje konstruktor bezparametrowy, to jest to wywołanie zbędne nawet w przypadku, gdy dziedziczysz po jakiejś konkretnej klasie. W przypadku braku takiego wywołania i tak zostanie dodane przy kompilacji i wpisywanie super() jest zgłaszane przez narzędzia analizy kodu jako zbędna instrukcja.
String description;
double multiplier;
Unit(String description, double multiplier) {
super();
this.description = description;
this.multiplier = multiplier;
}`
super()– to pewnie stąd. Nie przeszkadza to w niczym, ale też nic nie znaczy.