Prośba o wyjaśnienie przykładu działania kodu polimorficznego

0

Witajcie,
czy mógłby ktoś z Was wyjaśnić jak dokładnie wykonuje się ten kod i dlaczego wynik jego jest wyświetlany w takiej kolejności:

można gryza?

zioń ogniem

ałuuu

Oto kod

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;
  }
}
0

Wynik wyświetlany jest w kolejności w jakiej przechodzisz przez tablice z obiektami. Nie sadze, że ten kod ci się kompiluje(literowki, nawiasy, dziwnie zagnieżdżone klasy), wiec popraw to i wtedy sprawdz.

0

zabrakłlo Ci klamry i piszesz ' zaimast "i [] zamiast ()

Po co masz inta w argumentach metod?

Pętle for powinieneś uogólnić czyli nie: x<3 tylko x<ptw.length

Poza tym, lepiej klasę Potwor zrób abstrakcyjną.

4

Nie ma kolejnych etapów działania bo kod nie działa.

1

Radzę się uspokoić, bo już po tych niewielu postach Twoja postawa co najmniej odrzuca. Zamiast ciągle krzyczeć popraw kod.
Klasa Potwor to klasa bazowa. Dziedziczenie tej klasy przez kolejne (Wampir i Smok) pozwala na utworzenie obiektów i przypisanie ich do zmiennych klasy bazowej.

1

@Kubs: ja myślałem że @Julian_ sobie robi jak zwykle jaja a on napisał Ci całkiem sensowne uwagi.

Od siebie dodam, że:

  • nazwa metody "strasz()" jest nietrafiona
  • używasz za dużo spacji
  • nie wiadomo po co "strasz" zwraca boolean

I proponuję zmienić podejście do uwag na forum, bo inaczej nic się nie nauczysz. Przyjmujesz postawę obronną zamiast analizować uwagi.

1

@Kubs próbuje zrozumieć twoją frustracje, jednak nie możesz w taki sposób traktować ludzi którzy poświęcili Ci swój czas.
Zastanów, się czy na pewno twoje pytanie jest precyzyjne i nie wprowadza innych w błąd. Nie możesz umieszczać pseudokodu na forum Java nic o tym nie mówiąc.
Zdaję sobie sprawę, że jesteś początkujący i chciałbyś, by wszyscy tłumaczyli Ci każdy szczegół, ale musisz to robić w odpowiedni sposób. Jest wiele blogów, książek, tutorialii, gdzie na pewno znajdziesz pełno przykładów z wyjaśnieniem jak to działa. Musisz nauczyć się szukać, to jedna z podstawowych umiejętności każdego programisty.
Pisanie posta na forum powinno być dla ciebie ostatecznością.

Wracając do pytania widzę, że tworzysz 3 elementową tablice obiektów typu Potwór o identyfikatorze ptw.
Inicjalizujesz każdy z trzech elementów za pomocą konstruktorów z klas pochodnych (dziedziczenie). Możesz to zrobić, bo klasy Wampir, Smok niejako zawierają się w klasie Potwór.
Następnie za pomocą pętli for wywołujesz metodę strasz na kolejnych elementach tablicy ptw z argumentem x.

/* gdy x = 0 */
ptw[0].strasz(0);
/* wypisuje napis "można gryza?"
  i zwraca -> false */

Mam nadzieje, że to pomoże.
Pozdrawiam!

0

Obraźliwy post pod moim adresem napisany tutaj przez użytkownika SkromnySzczur został usunięty. Dziękuję adminowi. Czy użytkownik został również zbanowany za tą wypowiedź i używanie w niej wulgaryzmów?

1 użytkowników online, w tym zalogowanych: 0, gości: 1