Zum Inhalt springen

Grundlagen Vererbung (war: Blue J)


Empfohlene Beiträge

Geschrieben

also...

ich habe 1 klasse erstellt. diese hat exakt die gleichen funktionen des bildschirm aus sum.kern! sie ist nur selbst programmiert und heißt meinBildschirm

jetzt soll eine andere klasse(hier: stil) diese kennen lernen.(die klasse soll übergeben werden)

normalerweise kann man das einfach so machen:

STIL:

private Bildschirm kenntBildschirm;

constructor

public stil(sum.kern.Bildschirm pBildschirm)

{

kenntBildschirm = pBildschirm;

}

HAUPTPROGRAMM:

meinBildschirm hatmeinBildschirm;

stil hatStil;

constructor

public hauptprogramm()

{

hatmeinBildschirm = new meinBildschirm();

hatstil = new stil(hatmeinBildschirm);

}

sum.kern. wird automatisch ergänzt wenn man nichts davor schreibt.

jetzt ist meinBildshcirm aba ja nicht in sum.kern.

in sum.kern is nur der normale bildschirm

Geschrieben

eine kennt-Beziehung ist bekannt oder?

nehmen wir an ein stift soll im abgesetzenmodus sich im bildschirm bewegen und am rand des bildschirms apprallen.

dafür muss der stift den bildschirm kennen.

zufor mus der stift allerdings selbst programmiert werden, da es sich in eine OOP handelt(das objekt hier der superstift soll möglkichst viel selbst erledigen)

der superstift soll also den befehl kennen superstift.abbrallen();

damit der superstift den bildschirm nun kennt wird der bildschirm dem superstift im constructor übergeben.

public superstift(Bildschirm pBildschirm)

*steht für: sum.kern.Bildschirm

{

...

}

und im Hauptprogramm(constructor)

public hauptprogramm()

{

hatsuperstift = new superstift(hatBildschirm);

.....

der befehl im superstift sieht dann so aus

public abbrallen()

{

if(deie position > kenntBildschirm.breite())

{

dreh dich um();

}

}

---------------------funktioniert alles perfekt!!!--------------------

jetzt hat man den bildschirm mit allen seinen funktionen aber selöbst programmiert.

die Klasse heißt: superBildschirm

!!!!!!!!!

die Klasse: Bildschirm ist im package sum.kern enthalten und kann somit eindeutiog identifiziert werden.

(siehe: sum.kern.Bildschirm)

!!!!!!!!!!!!!!

der superBildschirm ist aber nciht im package sum.kern enthalten. wenn man jertzt statt eines normalen bildschirms im hauptprogramm den superbildschrim verwendet hat udn nun auch auf diesen zugreifen will, dann kann am nicht schreiben

Zitat von oben:

public superstift(Bildschirm pBildschirm)

*steht für: sum.kern.Bildschirm

{

...

}

sondern muss schreiben:

public superstift([COLOR="RoyalBlue"]superBildschirm[/COLOR] pBildschirm)

[COLOR="RoyalBlue"]*hier allerdings liegt das problem: es wird automatisch ergänzt: sum.kern.superBildschrim

diese Klasse gibt es aber nicht!!!

:confused::confused:was muss man hier hinschreiben statt sum.kern:confused::confused:[/COLOR]

{

...

}

Geschrieben
jetzt hat man den bildschirm mit allen seinen funktionen aber selöbst programmiert.

die Klasse heißt: superBildschirm

Auch wenn diese Klasse identische Methoden hat, kannst du sie trotzdem hier nicht ersetzen. Das hat auch nichts damit zu tun, in welchem Paket die Klassen liegen. Dazu müssten Bildschirm und superBildschirm schon in einer Vererbungsbeziehung stehen.
Geschrieben

das hat in meinen augen keinen sinn:confused::confused::confused:

wenn ich den bildschrim exakt nachprgrammiere müsste ich ihn doch durch die eigene klasse ersetzen können(also KOMPLETT ersetzen)

da sum.kern.Bildschirm nur eine vorprogrammierte klasse ist.

also dürfte sich nichts ändern, wenn ich dei klasse einfach selbst nochmal schreibe

aber mal anders gefrgt:

den normalen bildschrim rufe ich mit sum.kern.Bildschirn auf.

wir rufe ich den selbst erstellten bildschirm auf?????

_____._____.Bildschirm

Geschrieben
wenn ich den bildschrim exakt nachprgrammiere müsste ich ihn doch durch die eigene klasse ersetzen können(also KOMPLETT ersetzen)
Nein. So funktioniert Objektorientierung nun einmal nicht. Was du vorhast, erfordert eine Verwandschaft zwischen den Klassen.

Oder du änderst die Klasse superstift, dass sie mit deiner Bildschirmklasse arbeitet.

den normalen bildschrim rufe ich mit sum.kern.Bildschirn auf.

wir rufe ich den selbst erstellten bildschirm auf?????

_____._____.Bildschirm

Wenn die Klasse von dir ist, legst du doch selbst fest, in welchem Package sie liegt.
Geschrieben

mit dem _Link komm ich nciht klar...::(:(

aba mcih interessiert von der pc die eingenen klassen speichert

sum.kern.Bildschi8rm

^^der speicherort dre bildschirm der vorprogrtammiert ist und für jeden zugänglich

package v1;

das stand auf der seite(link) was für mc WAHRSCHEINLICH von interesse ist.

was bewirkt das???

Geschrieben
mit dem _Link komm ich nciht klar...::(:(

Wie wäre es, wenn Du es Dir durchliest und Dir die Beispiele anschaust und versuchst diese zu verstehen. Vor allem sind diese wirklich sehr gut erklärt.

das stand auf der seite(link) was für mc WAHRSCHEINLICH von interesse ist.

was bewirkt das???

Es ist für die genannte Vererbung irrelevant, was die Anweisung aber macht und wofür sie gedacht ist, findest Du auch dort Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 3.9 Compilationseinheiten und eigene Pakete schnüren

Geschrieben

ich will ja eig. kein eigenes package erstellen

wie greife ich auf das package zu indem die klasse jetzt ist???

sum.unnamed.superBildschirm gibt es nciht

und

sum.default.superBiuldschirm gibt es aauch nciht!!!

oda ist das gar nciht möglich???

wenn es nciht möglich ist, aber auch wenn würde ich trotzdem gerne wissen wie man ein package erstellt:

erste zeile:

package meins;

ergibt fehler: erst package erstellen und davon steht da einfach nix im link

Geschrieben

wie greife ich auf das package zu indem die klasse jetzt ist???

indem Du das Package via "import" importierst oder den kompletten Namen vor den Klassenaufruf setzt.

wenn es nciht möglich ist, aber auch wenn würde ich trotzdem gerne wissen wie man ein package erstellt:

Die erste Quelle wäre Oracle selbst Creating and Using Packages (The Javaâ„¢ Tutorials > Learning the Java Language > Packages)

P.S.: Korrekte Orthographie wäre hilfreich für die Leser

Geschrieben

Ich habe dem Package keinen Namen gegeben!!!

Der Kopf der Quellcodes:


import sum.kern.*;


/**

 * asdf wird erzeugt.

 * 

 * @author jkl

 * @version 1.0 

 */

public class asdf

{

wo wird dsa jetzt gespeichert?

unnamed package oder default package stend in dem Link.

aber sum.unnamed.asdf

oder

sum.default.asdf

gibt es nciht.

Geschrieben

wem ich dem Link folgen passiet folgendes:

Sie haben die "package"-Anweisung auf ein Paket geändert, das es in diesem Projekt nicht gibt. Wenn Sie diese Klasse in ein anderes Paket verschieben wollen, müssen sie das Ziel-Packet zuerst erstellen. [...]

Geschrieben

Fang' doch bitte damit an, strukturiert die Sachen anzugehen. Um was geht es jetzt, Vererbung oder Package Struktur !?

Für beides hast Du Links bekommen, die Du durcharbeiten sollst. Bezügl. der Packagestruktur ist in dem Link "Creating and Using Packages" ein Kapitel "Managing Source and Class Files", in dem beschrieben steht, wie innerhalb des Packages die Daten organisiert werden. In den vorhergehenden Artikeln wie man Packages benutzt.

Die Vererbung ist in dem Onlinebuch "Java ist auch eine Insel" mit Beispielen ausführlich beschrieben.

Generell: Beschreibe Deine Probleme so, dass sie verständlich sind, denn niemand kann auf Deinen Monitor schauen oder hat die gleichen Daten wie Du vorliegen.

Geschrieben

Ich weiß nciht wirklich ob ihr mich versteht :-(

um auf den normalen Bildschirm zu zugreifen schreibe ich:

[COLOR="Lime"]sum.kern.Bildschirm[/COLOR]
richtig?? wenn ich jetzt auf meinen eingenen Bildschirm zugreifen will (der Name war superBildschirm) was schreibe ich dann?
[COLOR="red"]default.superBildschirm[/COLOR]

kann man nicht eingeben!!!!!

kann es sein, das es unmöglich ist, was ich vorhabe???????

>>>ich will auf meine eigene Klasse zugreifen.!!!!!!

OHNE ein package zu erstellen!!!!!

Geschrieben
Ich weiß nciht wirklich ob ihr mich versteht :-(

Wir verstehen schon was Du möchtest. Du solltest aber mal das lesen, was genannte wurde und verstehen, denn die Lösung ist durch einfaches lesen zu erreichen

Geschrieben

Ich finde eure Einstellung sehr schlecht.

1. Antwortet ihr nicht auf alle Fragen und dann seid ihr beleidigt, weil ich WETTE

Also...

bitte der Reihe nach beantworten:

1.um auf den normalen Bildschirm zu zugreifen schreibe ich:

sum.kern.Bildschirm
richtig?? 2. wenn ich jetzt auf meinen eingenen Bildschirm zugreifen will (der Name war superBildschirm) was schreibe ich dann?
default.superBildschirm

kann man nicht eingeben!!!!!

3.

kann es sein, das es unmöglich ist, was ich vorhabe???????

>>>ich will auf meine eigene Klasse zugreifen.!!!!!!

OHNE ein package zu erstellen!!!!!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...