tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
600
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Firewater Firewater ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Beiträge
    4
    Hi Leute,

    ich habe eine Informatik-Übung, bei der ich mal Hilfe bräuchte, hier ist die Aufgabe:
    ------------------------------------------------------------------------------------------------------------------

    a) Gegeben seien folgende Methoden, wobei B Unterklasse von A und C Unterklasse von B ist:

    int add(long a, int b) {...} // Methode 1
    int add(double a, float b) {...} // Methode 2
    void print(B b, C c) {...} // Methode 3
    void print(A a, B b) {...} // Methode 4

    Welche Methode wird statisch an folgende Aufrufe gebunden, bzw. was passiert bei folgenden Aufrufen
    (begründen)?

    A a = new A();
    B b = new B();
    C c = new C();
    add(1.0, 2.0); // Aufruf 1
    add(2.0, 1.0F); // Aufruf 2
    add(1, 2); // Aufruf 3
    add(2, 1L); // Aufruf 4
    print(c, c); // Aufruf 5
    print(a, c); // Aufruf 6
    print(c, b); // Aufruf 7
    print(b, a); // Aufruf 8

    ------------------------------------------------------------------------------------------------------------------

    aalso gut ich hab die Aufgabe jetzt mal so interpretiert, dass die Methoden in jeder Klasse stehen!? ich weiß, dass die Klasse C aktuell ist, weil sie ja als letztes Objekt aufgerufen wird und auch die unterste Unterklasse ist sozusagen.
    also kann man auf jeden Fall Objekte vom Typ C aufrufen.
    weiterhin sind das ja überladene Methoden, also der Compiler (oder wer auch immer) sucht sich die passende Methode aus, je nachdem, welcher wert eingegeben wird

    ich habe vor Allem folgendes problem: ich weiß nicht, ob man die Objekte a und b aufrufen kann?

    mein Lösungsvorschlagwäre:

    aufruf 1: hier handelt es sich um kommazahlen, also methode 2
    aufruf 2: auf jeden Fall methode 2 wegen dem F
    aufruf 3: methode 1
    aufruf 4: fehler**** der zweite typ kann ja kein Long sein?

    aufruf 5, 6,7,8: hier weiß ich nicht, kann man überhaupt auf a, b und c zugreifen? wenn ja, wie ist das mit der reihenfolge? die wird ja gar nicht eingehalten... also entweder gehen die Aufrufe 7 und 8 und vielleicht sogar 5, weil c ja einmal vorkommt, oder die gehen alle gar nicht, weil die reihenfolge nicht stimmt****

    wär nett, wenn ihr mir eure Intelligenz borgen könntet

    @mods: falls das in irgendein unterforum sollte, sorry!


    danke
    Fire
     

  2. #2
    Technoblade Technoblade ist offline Mitglied Gold
    Registriert seit
    Feb 2009
    Beiträge
    193
    Naja, also das mit dem Unterforum ist eher das geringere Problem, kirtischer ist es eher damit: Thema Übungszettel

    Daher hast du bisher vermutlich auch noch keine Antwort bekommen udn wirst auch keine Lösungen bekommen.
    Aber Hilfestellungen sind denke ich dennoch erwünscht. Ein Tipp den ich dir geben kann ist folgender:

    Wenn B von A erbt, dann ist jedes Objekt der Klasse B auch ein Objekt der Klasse A, allerdings nicht umgekehrt. Oder Realitätsnäher könnten wir auch A durch "Buch" ersetzen und B durch "Sachbuch". In diesem Fall würde "Sachbuch" natürlich von "Buch" erben.
    Hätten wir also z.B. eine Methode lesen(Buch b), dann würde folgender Aufruf ohne Problem funktionieren:

    Code java:
    1
    2
    
    Sachbuch sb = new Sachbuch();
    lesen(sb);

    Oder wieder übertragen auf A und B und einer Methode print(A a), wobei B von A erbt:

    Code java:
    1
    2
    
    B b = new B();
    print(b)
     

  3. #3
    Firewater Firewater ist offline Grünschnabel
    Registriert seit
    Jun 2004
    Beiträge
    4
    Hallo Technoblade,

    danke für deine Antwort. Den Hilfetext hab ich gelesen, aber ich hab ja eigentlich von niemandem verlangt, mir die Aufgaben zu machen...

    also das mit der Vererbung und quasi Spezialisierung hab ich schon verstanden.

    das ich auf (in meinem fall) ein Objekt von c zugreifen kann ist klar, weil C die "spezialisierteste" klasse ist, aber kann ich auch auf Objekte von a oder b zugreifen? zum Beispiel der Befehl "super" macht doch sowas, wenn der dann in der methode vorkommen sollte...?

    und weiterhin die frage, ist die reihenfolge wichtig? kann ich wenn vorher da steht print (B b, C c) jetzt auch die methode mit print (c, b) starten?

    danke
    Fire
     

  4. #4
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    353
    Ja, die Reihenfolge in der du Parameter übergibst ist relevant. Zudem ist es so, dass c ein B ist, b jedoch nicht unbedingt ein C sein muss. Daher wird dir dein Compiler einen Aufruf print(c, b) nicht durchgehen lassen. Während es bei c noch gut geht, da ja c ein B ist hast du Probleme mit dem zweiten Parameter. Dieser müsste ein C sein, allerdings ist b kein C.
     
    Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
    Win32Easy - Blog
    Es würde mich freuen, wenn ihr einen Kommentar postet!

  5. #5
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,
    @Firewater
    es gibt aber eins was ich noch bemängeln muss.
    Achte doch bitte auf deine Groß- und Kleinschreibung.

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. [H] C++ Methoden
    Von Justin-1992 im Forum C/C++
    Antworten: 8
    Letzter Beitrag: 07.05.10, 22:34
  2. geschachtelte Abfragen mit Aliasen -> Überschreibung verhinden
    Von topf im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 17.10.07, 23:16
  3. Operanden Überladung
    Von Exceptionfault im Forum .NET Application und Service Design
    Antworten: 2
    Letzter Beitrag: 12.04.07, 22:13
  4. Überschreibung des Integer-Wert
    Von netrobot im Forum Java
    Antworten: 15
    Letzter Beitrag: 22.12.05, 09:49
  5. Get und Set-Methoden
    Von Marco Witter im Forum Java
    Antworten: 8
    Letzter Beitrag: 26.03.04, 14:25