Objekte und Klassen

Status
Nicht offen für weitere Antworten.

Dalia1

Mitglied
Hallo,

sorry, ich habe nochmal eine wahrscheinlich etwas bescheuerte Frage. Wäre super, wenn mir trotzdem jemand helfen könnte.

Angenommen ich habe eine Klasse Kuh und erzeuge jetzt in einer anderen Klasse Kuhstall mit Hilfe des Konstruktors ein neues Objekt der Klasse Kuh, dass ich z.B. kuh1 nenne. Die Klasse Kuh hat bestimmte Attribute und Methoden, allerdings will ich für meinem Objekt kuh1 noch Methoden und Atrribute auf der Konsole ausgeben lassen, die in der Klasse Kuh nicht definiert sind. Das geht dann nicht, oder? Das heißt ich müsste wahrscheinlich eine Unterklasse Kuh1 erstellen, die über diese Attribute und Methoden verfügt?

Grüße

Dalia
 

The_S

Top Contributor
Wenn ich dich richtig verstanden habe: Ja. Auch wenn ich den Sinn (bei deinem "konkreten" Beispiel nicht so ganz verstehe).
 

Dalia1

Mitglied
Also ja heißt, dass es nicht geht oder?

Mein konkretes Beispiel macht auch wenig Sinn, es ist nur das erste, was mir in den Sinn gekommen ist. Das Problem ist eher theoretischer Natur ;)
 

mrbela

Bekanntes Mitglied
allerdings will ich für meinem Objekt kuh1 noch Methoden und Atrribute auf der Konsole ausgeben lassen, die in der Klasse Kuh nicht definiert sind

Das verstehe ich nicht ganz. kuh1 ist doch eine Instanz der Klasse Kuh. Also hat kuh1 auch genau die gleichen methoden und Attribute, da sie ja ein Vertreter von Kuh ist. Was ich auch nicht ganz verstehe: Warum, bzw. wie willst Du die Methoden auf der Konsole ausgeben lassen?

Wenn Du die Klasse Kuh1 mit mehr Methoden und Attributen ausstatten willst, sie aber immer noch vom Typ Kuh sein soll, dann bietet sich ein extend an.

Java:
public Kuh1 extends Kuh {

Ein typisches Beispiel wäre hier eine "Unterklasse" Kalb zu machen. Ein Kalb ist aber immer noch eine Kuh nur mit extra methoden und Attributen.

Java:
public Kalb extends Kuh {
 

Dalia1

Mitglied
Das verstehe ich nicht ganz. kuh1 ist doch eine Instanz der Klasse Kuh. Also hat kuh1 auch genau die gleichen methoden und Attribute, da sie ja ein Vertreter von Kuh ist. Was ich auch nicht ganz verstehe: Warum, bzw. wie willst Du die Methoden auf der Konsole ausgeben lassen?

Wenn Du die Klasse Kuh1 mit mehr Methoden und Attributen ausstatten willst, sie aber immer noch vom Typ Kuh sein soll, dann bietet sich ein extend an.

Java:
public Kuh1 extends Kuh {

Ein typisches Beispiel wäre hier eine "Unterklasse" Kalb zu machen. Ein Kalb ist aber immer noch eine Kuh nur mit extra methoden und Attributen.

Java:
public Kalb extends Kuh {

Danke schonmal :)

ich habe mich wohl etwas unklar ausgedrückt. ich könnte ja zum beispiel eine methode schreiben, die mir das gewicht von kuh1 ausgibt und diesen wert dann auf der konsole ausgeben lassen. aber wenn ich das attribut gewicht in der klasse Kuh nicht eingeführt hätte, kann ich es ja auch nicht ausgeben lassen. meine frage war jetzt, ob ich in der anderen Klasse Kuhstall diese methode und das attribut quasi nachträglich hinzufügen könnte. Das Unterklassen sinnvoller sind, ist mir klar. Mir geht es mehr darum, ob die Möglichkeit überhaupt besteht!
 

mrbela

Bekanntes Mitglied
Ich geh mal davon aus, dass die Klasse Kuhstall einen Vector, ArrayList o.Ä., enthält, in dem die gnazen Instanzen der Klasse Kuh gespeichert werden?!

Zu Deiner Frage: Wenn die Klasse Kuh kein Attribut für ein Gewicht hat, dann kannst Du es im Kuhstall nicht mehr "hinzufügen", da es Dir ja nur möglich wäre ein Attribut für den Kuhstall zu schreiben. Das wäre zB ein Gesamtgewicht des Kuhstalls ;)

Eine Möglichkeit gibt es aber dennoch, die ist aber sehr unschön:

Wenn Du eine Kuh in den Kuhstall hinzufügst, könntest du das ganze noch mit einem Gewicht versehen.. Dann weiß aber nur der Kuhstall das Gewicht der Kuh und nicht die Kuh selbst. Ich weiß das klingt kompliziert, aber lies es 2 mal oder so ;)

Das geht zB mit einer HashMap (HashMap (Java 2 Platform SE v1.4.2)). Ein Element der HashMap besitzt jew. einen Key und ein Value.. Als Key könntest Du die Kuh verwenden und als Value ihr Gewicht.

Java:
HashMap<Kuh, int> kuhstall = ...
Kuh Marta = new Kuh("Marta");
kuhstall.addKuh(Marta, 80);
 

Landei

Top Contributor
In dynamischen Sprachen (z.B. Ruby) oder prototypbasierten Sprachen (z.B. JavaScript) ist sowas weitaus üblicher. In Java sind Klassen "stabil", und wenn du ein bestimmtes Attribut haben willst, muss es eben in die Klasse hinein, oder in eine Unterklasse. Man kann natürlich dynamischere Konstrukte basteln (etwa mit Key-Value-Paaren), aber sowas ist eher die Ausnahme, und das wäre für eine Kuh bestimmt weniger geeignet. OO-Programmierung im Java-Sinn soll den Programmierer auch mit sanfter Gewalt dazu bringen, sich vorher zu überlegen, welche Methoden und Attribute er benötigt.
 

Hutmacher

Bekanntes Mitglied
Könnte man nicht auch eine anonyme Klasse erweitern? (was natürlich nich speicherbar ist)
D.h.:
Java:
... 
doSomethingWith(new Kuh(){ public void neueMethode()
                         {      /*Something*/     }}
);
...
 

pixelbug

Mitglied
ok daran hatte ich jetzt nicht gedacht , das wird aber auch nicht gerade schön aus sehen.

Funktioniert das mit der Reflection auch wenn das Objekt nur als Parameter einer Funktion übergeben wird ? Weil ohne Referenz auf das Objekt kann ich ja nichts über das Objekt "rausfinden". (zB mit getMethods() die Methoden besorgen)

edit:
Wenn man das per Reflection macht gibt es dann einen besseren Weg als folgenden (abgesehen von der Exception Behandlung):

Java:
Kuh f = new Kuh(){
	public void g(){
		System.out.println("test");
	}
};

Method[] methoden =  f.getClass().getMethods();

for(Method m : methoden) {
	if(m.getName().equals("g")) {
		try {
			m.invoke(f);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}
 
Zuletzt bearbeitet:

Murray

Top Contributor
Man hat ja immer irgendein "Object" am Wickel. Mit dessen getClass-Methode erhält man das Class-Object (sowohl bei "normalen" als auch bei anonymen Klassen) - insofern sollte es möglich sein, beliebige Methoden einfach über den Namen zu finden und aufzurufen.
Insgesamt sieht das aber eher "hacky" aus; guter Stil ist anders...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
G Klassen und Objekte Java Basics - Anfänger-Themen 2
M Klassen und Objekte Java Basics - Anfänger-Themen 2
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
Orkanson Objekte und Klassen Java Basics - Anfänger-Themen 8
S Objekte mit gleichem Namen in unterschiedlichen Klassen Java Basics - Anfänger-Themen 3
Z OOP Objekte einer Klasse weiteren Klassen zur Verfügung stellen Java Basics - Anfänger-Themen 17
D Methoden Wie können Klassen auf Klassenfremde Objekte zugreifen? Java Basics - Anfänger-Themen 7
C Klassen/Objekte Verständnis Java Basics - Anfänger-Themen 8
Z Wie Objekte anderer Klassen ansprechen? Java Basics - Anfänger-Themen 2
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
K Methoden Uhr als Übungsaufgabe Klassen/Objekte Java Basics - Anfänger-Themen 3
A OOP Klassen und Objekte - Diagramme Java Basics - Anfänger-Themen 2
K Best Practice In Klassen auf andere Objekte mit variablen Namen zugreifen Java Basics - Anfänger-Themen 6
A Objekte aus 2 Klassen mit compareTo() vergleichen Java Basics - Anfänger-Themen 7
V Objekte/Klassen erstellen - Erklärung anhand Beispiel Java Basics - Anfänger-Themen 4
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
S Vererbung Objekte in verwandten Klassen (Kovarianz, Polymorphie) Java Basics - Anfänger-Themen 4
B Objekte aus einer anderen Klasse(in der sich weitere Klassen befinden) erzeugen Java Basics - Anfänger-Themen 24
B Klassen und Objekte Java Basics - Anfänger-Themen 10
J Objekte und Klassen Java Basics - Anfänger-Themen 8
I Objekte an andere Klassen/Methoden übergeben? Java Basics - Anfänger-Themen 5
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
T Klassen, Objekte, Methoden Java Basics - Anfänger-Themen 9
X Klassen & Objekte Java Basics - Anfänger-Themen 6
J Verständniss Frage zu Klassen, Objekte und Methoden Java Basics - Anfänger-Themen 8
J Objekte und Klassen? Java Basics - Anfänger-Themen 12
G Objekte von Klassen die erst zur Laufzeit bekannt sind erstellen Java Basics - Anfänger-Themen 6
B Uni (Klassen und Objekte) verwenden Java Basics - Anfänger-Themen 2
muchodrinko Auf Objekte anderer Klassen zugreifen? Java Basics - Anfänger-Themen 16
T Klassen und Objekte externer Aufruf. Java Basics - Anfänger-Themen 8
M Klassen und Objekte => richtiges Verständnis? Java Basics - Anfänger-Themen 6
A Objekte von abstrakten Klassen? Java Basics - Anfänger-Themen 6
K Objekte/Klassen erweitern ~ Javascript Prototyp Java Basics - Anfänger-Themen 5
M Objekte zwischen Klassen "handeln" Java Basics - Anfänger-Themen 4
K Objekte erstellen, wenn der Klassen-Name als String vorliegt Java Basics - Anfänger-Themen 4
M Klassen und Objekte (kopieren) Java Basics - Anfänger-Themen 7
L Zusammenhang Methoden, Klassen, Objekte, static - sun doku Java Basics - Anfänger-Themen 4
K Programm in Klassen/Objekte zerlegen - wie? Java Basics - Anfänger-Themen 3
G Was sind Klassen, Objekte und Methoden? Java Basics - Anfänger-Themen 3
N Zugriff auf Objekte von fremden Klassen aus? Java Basics - Anfänger-Themen 4
M Klassen, Objekte, Konstruktor Java Basics - Anfänger-Themen 5
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Objekte miteinander vergleichen Java Basics - Anfänger-Themen 18
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
J Java GUI- Objekte Position per Quelltext bestimmen Java Basics - Anfänger-Themen 4
G Objekte in Methoden? Java Basics - Anfänger-Themen 13
H Auf Objekte bzw Variabeln aus einer anderen Methode zugreifen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben