Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

Vererbung in Java
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> Vererbung in Java
 
Autor Nachricht
Kossy
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 09.12.2005
Beiträge: 306

BeitragVerfasst am: 12 Mai 2007 - 11:33:51    Titel: Vererbung in Java

Servus Leute,

habe folgenden Sachverhalt:

Eine Klasse "Computer" mit den Funktionen "schalteEinAus()" und "nenneBetriebsstatus()".

Eine Klasse "Server" mit den Funktionen "netzEin()" und "setzeTypbezeichnung()".

Die Klasse "Computer" ist die Basisklasse, die Klasse "Server" die Subklasse. Folgende Instanzerzeugung findet statt:


Computer computer = new Server();


Sollen nun Methoden der Klasse "Server" von der Variablen "computer" angesprochen werden, muß dieses ja explizit angegeben werden:

(Server)computer.netzEin();


Wie sieht das bei der nun folgenden Instanzerzeugung aus:

Server server = new Computer();


Ist hier eine ähnliche Typkonvertierung notwenig, um über die Variable "server" z.B. eine Methode aus der Klasse Computer ansprechen zu können, also

(Computer) server.nenneBetriebsstatus();
Tolotos
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 20.01.2007
Beiträge: 307

BeitragVerfasst am: 12 Mai 2007 - 16:28:53    Titel:

Code:
(Server) computer.netzEin();

Fast! Richtig ist:
Code:
((Server) computer).netzEin();


Server brauchst du nicht auf Computer zu casten,
da ja jeder Server gleichzeitig auch ein Computer ist.

Die Klasser Server erweitert(extends) ja nur
die Klasse Computer um zusätzlich/abgeänderte Methoden/Attribute
Kossy
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 09.12.2005
Beiträge: 306

BeitragVerfasst am: 05 Jun 2007 - 20:00:47    Titel:

Aber würde es denn prinzipiell gehen?

Mal was anderes: Mein Prof. sagt in seinem Vorlesungsskript, dass alle Methoden zunächst dynamisch gebunden sind, nur speziell gekennzeichnete Methoden sind statisch gebunden.

Ich verstehe das nicht ganz, bezieht sich das nur auf in Subklassen überschriebene Methoden oder ist mein ganzes bisherigen Vorgehen, also die castings, im Grunde überflüssig?
quatsch
Moderator
Benutzer-Profile anzeigen
Moderator


Anmeldungsdatum: 31.08.2005
Beiträge: 3497

BeitragVerfasst am: 05 Jun 2007 - 20:58:42    Titel: Re: Vererbung in Java

Kossy hat folgendes geschrieben:
Server server = new Computer();

Das dürfte so nicht gehen. Wenn Du einer Variable vom Typ X ein Objekt zuweist, so muss dieses vom Typ X sein oder von einem Typ, der X erweitert (also im o. g. Beispiel "mindestens" Server). Das hat auch einen Grund: Auf server kannst Du ja alle Methoden von Server aufrufen. Wenn darin nun ein Objekt vom Typ Computer stecken könnte, so gibt es u. U. die Methode gar nicht.
Wirtschaftsinformatiker
Valued Contributor
Benutzer-Profile anzeigen
Valued Contributor


Anmeldungsdatum: 30.06.2006
Beiträge: 7083

BeitragVerfasst am: 05 Jun 2007 - 20:58:51    Titel:

Zitat:
Aber würde es denn prinzipiell gehen?


es sollte gehen, es ist aber überflüssig.

Zitat:
Mal was anderes: Mein Prof. sagt in seinem Vorlesungsskript, dass alle Methoden zunächst dynamisch gebunden sind, nur speziell gekennzeichnete Methoden sind statisch gebunden.

Ich verstehe das nicht ganz, bezieht sich das nur auf in Subklassen überschriebene Methoden oder ist mein ganzes bisherigen Vorgehen, also die castings, im Grunde überflüssig?


nein, überflüssig wird das Casten dadurch gerade nicht.
Weil dynamisches binden bedeutet ja, dass der Compiler schaut, von welchem Objekt die aufrufende Instanz ist. Daher muss man die Objektinstanz in das Objekt casten, dessen Methode man aufrufen will.
Statische Methoden sind mehr oder weniger unabhängig vom Objekt, z.b. Math.sinus benötigt gar kein Objekt sinus.

Zitat:
Kossy hat folgendes geschrieben:
Server server = new Computer();

Das dürfte so nicht gehen. Wenn Du einer Variable vom Typ X ein Objekt zuweist, so muss dieses vom Typ X sein oder von einem Typ, der X erweitert (also im o. g. Beispiel "mindestens" Server). Das hat auch einen Grund: Auf server kannst Du ja alle Methoden von Server aufrufen. Wenn darin nun ein Objekt vom Typ Computer stecken könnte, so gibt es u. U. die Methode gar nicht.


genau.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> Vererbung in Java
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum