Wpis z mikrobloga

#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 {

String description;

double multiplier;

Unit(String description, double multiplier) {

super();

this.description = description;

this.multiplier = multiplier;

}`
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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?
  • Odpowiedz
@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.
  • Odpowiedz
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) ;)
  • Odpowiedz
@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.
  • Odpowiedz