Referenzvariablen von Typ einer Klasse

Barney90

Grünschnabel
Hallo ich bin eine Java Neuling und es geht um folgendes:

Nehmen wir an ich habe eine Klasse namens Hund und will ein Objekt erstellen.
Java:
public class Hund {

String Farbe;

public Hund(String Farbe){

this.Farbe = Farbe;
}
public static void main(String[] args) {
     
Hund Pitbull = new Hund(Schwarz);
//hier darüber



   }
}

Was sagt mir der Variabletyp Hund aus ? Das die Variable nur methoden von der Klasse Hund aufrufen kann ?

MFG
barney
 
Zuletzt bearbeitet von einem Moderator:
Hi

Genau.

Das erste "Hund" in der Zeile, also der Variablentyp, bedeutet, dass man davon nur Member
von Hund verwenden kann (zB. interessant für den Compiler beim prüfen, was man da aufruft).
Das zweite Hund erzeugt das tatsächlcihe Objekt, das in die Variable gespeichert wird.

Hier schaut es ziemlich überflüssig aus, zweimal "Hund" schreiben zu müsssen, aber eine
Hund-Variable muss nicht unbedingt ein Hundobjekt enthalten. Einerseits kann null drinsein,
also kein Objekt, andererseits vererbte Klassen:

Wenn es zB. eine Klasse "Bernhardiner" gibt, die von Hund erbt (damit die Farbvariable etc.
auch hat, aber evt. noch zusätzliche Sachen, die es in Hund nicht gibt), kann auch ein
Bernhardinerobjekt in die Hundvariable gespeichert werden (Bernhardiner hat ja
mindestens alles, was es in Hund gibt, und damit kann man weiterhin sicher alle
Hundsachen bei der Hundvariable verwenden).
(Achtung, umgekehrt gehts nicht, also Hundobjekt in Bernhardinervariable).

Mit dem Bernhardinerobjekt in einer Hundvariable kann man so direkt zwar nur die
Sachen verwenden, die es in Hund gibt (also nichts, was in Bernhardiner zusätzlich
existiert), aber man mit "instanceof" prüfen, was das Objekt drin außer Hund sonst noch
ist, und wenn man damit sieht dass es ein bernhardiner ist kann man es casten und dann
auch die Bernhardinersachen verwenden. ... Nicht so wichtig.

Und vielleicht fragst du dich jetzt, warum man Bernhardinerobjekte nicht einfach in
Bernhardinervariablen (statt Hundvariablen) speichert, wenn der Zugriff auf die
speziellen Bernhardinersachen sonst so umständlich ist. Ja, stimmt, wäre in dem
Fall kein Problem. Interessant wird es erst, wenn man zB. irgendwo Klassenmethoden
hat, die Hunde als Parameter nehmen und eben so schon fertigprogrammiert sind.
Da kann man dann auch Bernhardiner ohne jede Änderung übergeben...
 
Danke so gut verständlich aber was wären denn so Fälle von Methoden wo eine Variable vom Hund typ gebraucht wird ?
 
Hi,

du könntest eine "Person" haben, die als Attribut einen Hund hat. Wenn das Attribut null ist, so besitzt diese Person keinen Hund.
Als Verwendungszweck würde mir hier ein Versicherungsberater einfallen, der jedem seiner Kunden einen Brief schreibt, die einen Hund haben.

Somit hättest du in der Klasse "Person" eine "Hund getHund()" und eine "void setHund(Hund)".

Grüsse,
BK
 
Zurück