• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak wykonuje się ten kod (polimorfizm)

Object Storage Arubacloud
0 głosów
651 wizyt
pytanie zadane 17 sierpnia 2017 w Java przez Kubs Mądrala (5,190 p.)
edycja 17 sierpnia 2017 przez Kubs

Witajcie,

jak wykonuje się ten kod od momentu pętli `for` do końca? Nie rozumiem co następuje po czym.

Wynik wykonania to:

można gryza?

zioń ogniem

ałuuu

 

public class PotworTester (

     public static void main (String [] args) {
       
       Potwor [] ptw = new Potwor [3];

       ptw [0] = new Wampir();
       ptw [1] = new Smok();
       ptw [2] = new Potwor();

  for (int x = 0, x<3; x++)

      ptw[x].strasz[x];
     }
   }
}

class Potwor {

   boolean strasz (int d) {
      System.out.prinln ("ałuuu");
     return true;
}


class Wampir extends Potwor {

    boolean strasz (int x) {
      System.out.println ("można gryza?");
    return false;
}


class Smok extends Potwor {
  boolean strasz (int stopien) {
    System.out.prinln ("zioń ogniem");
  return true;
  }
}



 

1 odpowiedź

+2 głosów
odpowiedź 17 sierpnia 2017 przez mbabane Szeryf (79,280 p.)
To jest klasyczne pokazanie jak dziala polimorfizm i wiazanie dynamiczne tj. Java sama wybiera odpowiednia metode do wykonania, na podstawie typu podanego w liniach 7-9.
komentarz 17 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Dziekuje  :)

Moze ktos jeszcze doda informacje co i jak  dokladnie wykonuje sie poczynajac od petli  'for'
2
komentarz 17 sierpnia 2017 przez K0XM4N Gaduła (3,640 p.)
Pętla wykonuje metodę strasz na każdym obiekcie w tablicy potworów. Skoro w tej tablicy znajdują się różne potwory, wykonywane metody wyświetlają inny tekst.
Pierwszy element tablicy to wampir więc wyświetla można gryza?, następnie jest smok: zioń ogniem itd.
komentarz 17 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Wow, dziękuje serdecznie. Dopytam jeszcze czy  argumenty kolejno dla tych trzech klas  -  'd ' , 'x' , 'stopien' odwołują się do obiektów w tych tablicach? Czy są tam po coś innego? I co dokładnie oznacza 'return false' w klasie Wampir?
1
komentarz 17 sierpnia 2017 przez mbabane Szeryf (79,280 p.)
W tym konkretnym przypadku te argumenty nie maja wlasciwie znaczenia, poniewaz w żaden sposob nie sa uzywane w tych metodach, tak wiec gdyby ich nie bylo, wynik bylby taki sam.
komentarz 17 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Dziękuję. A 'return false' jakie ma znaczenie? Wszędzie jest 'return true' a w klasie Wampir 'return false'....hmm
1
komentarz 17 sierpnia 2017 przez mbabane Szeryf (79,280 p.)
W sumie akurat w tym konkretnym przykladzie tez jest to bez znaczenia poniwaz tez sie z tego nie korzysta. A czemu akurat w tym jednym jest false to juz trzeba by autora zapytac bo jak mi sie wydaje Ty nim nie jestes.

 

W sumie to po co Ci ta wiedza? Bo z tego co rozumiem to chyba nie za bardzo umiesz programowac, skoro pytasz nawet o returny.
komentarz 17 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Tak to prawda. Jest przykład z książki, a ja dopiero się uczę. Przerabiam temat polimorfizmu i na końcu rozdziału jest właśnie takie ćwiczenie.

Kwestia z 'return false' pojawiła się dlatego, że patrząc na pozostałe dwie klasy które 'zwracały prawdę' ,po prostu zastanawiałem się dlaczego ta klasa Wampir też tej prawdy nie zwraca.
komentarz 17 sierpnia 2017 przez mbabane Szeryf (79,280 p.)
To musisz sobie nieco powtórzyć podstawy.
komentarz 18 sierpnia 2017 przez K0XM4N Gaduła (3,640 p.)
To jest bardzo abstrakcyjny przykład. Umieszczenie tam returna z wartościa false czy true nie ma znaczenia jak wspomniał mbabane.
Ta metoda powinna być typu void, wtedy nie zwraca nic i tylko wyświetla tekst.
1
komentarz 19 sierpnia 2017 przez Kubs Mądrala (5,190 p.)
Dziękuję Ci serdecznie :)

Podobne pytania

0 głosów
0 odpowiedzi 297 wizyt
pytanie zadane 27 października 2017 w Android, Swift, Symbian przez Kubs Mądrala (5,190 p.)
0 głosów
3 odpowiedzi 634 wizyt
pytanie zadane 15 sierpnia 2017 w Android, Swift, Symbian przez Kubs Mądrala (5,190 p.)
0 głosów
0 odpowiedzi 151 wizyt
pytanie zadane 10 marca 2017 w JavaScript przez Miles Nowicjusz (170 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...