Klasseninitialisierung unklar

DennisXX

Bekanntes Mitglied
Hallo !

Ich habe zwei Klassen (Klasse A und Klasse B). Klasse B erweitert Klasse A.

Jetzt habe jetzt folgenden Code und es wäre nett, wenn mir jemand erklären könnte, warum die letzte Codezeile nicht funktioniert.

Java:
A refA = new A();  //funktioniert

B refB = new B();   //funktioniert

A refA = new B();  //funktioniert auch noch zwecks Polymorphie

B refB = new A()  //warum funktioniert das nicht mehr?

Danke !

Dennis
 
Zuletzt bearbeitet:
G

Gast2

Gast
Ein A ist kein B.

Stell dir vor du hast eine Klasse Person, und zwei Unterklassen Professor und Student.

Ein Student ist immer eine Person. Aber eine Person ist nicht immer ein Student.
 

njans

Top Contributor
B extends A.
Alles was A hat,hat damit auch B.
Aber alles was B hat, hat A nicht.
Java:
B refB = new A()
Damit hätte refB alle Funktionen der Klasse B, aber A kann diese doch gar nicht bereitstellen.
 

mohrenkopf

Mitglied
Ein bisschen hochgestochener:
Merke: Eine Referenzvariable refB, die mit [c] B refB[/c] deklariert wird kann enthalten:
  1. eine Referenz auf eine Instanz der Klasse B,
  2. eine Referenz auf eine Instanz einer Unterklasse von B
  3. null

Da A aber eine Superklasse von B ist, geht das nicht.

Das geht noch viel netter wenn [c]class Katze extends Tier ...[/c] und [c]class Hund extends Tier[/c] gilt

[Java]
Katze a = new Tier(); //geht nicht

Tier b = new Katze(); //OK
Tier c = new Hund(); //OK

Katze d = b; //kompiliert nicht! obwohl b eine Katze ist!
Katze e = c; //kompiliert nicht!

Katze x = (Katze) b; //kompiliert und läuft
Katze y = (Katze) c; //kompiliert zwar, wirft aber ClassCastException, weil c eben keine Katze ist.
[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Umgang mit Graphics unklar : Erstellung u Uebergabe an Funktion Java Basics - Anfänger-Themen 18
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
B Code Zeile unklar Java Basics - Anfänger-Themen 9
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
N Aufagabenstellung unklar Java Basics - Anfänger-Themen 8
J Methoden Math.random unklar Java Basics - Anfänger-Themen 4
M Javaklasse unklar Java Basics - Anfänger-Themen 3
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
A Fehlermeldung Unklar. Java Basics - Anfänger-Themen 1
M Throws Anweisung innerhalb eines Methodenkopfes unklar Java Basics - Anfänger-Themen 4
M This Methode unklar Java Basics - Anfänger-Themen 2
M Arithemtischer Ausdruck unklar Java Basics - Anfänger-Themen 2
K Maven Dependency unklar Java Basics - Anfänger-Themen 5
K .Class Operator unklar Java Basics - Anfänger-Themen 3
K Schnittstelle - Interface unklar Java Basics - Anfänger-Themen 4
B Funktionsweise Iterator unklar Java Basics - Anfänger-Themen 7
T Collections Java Anfänger - Array-Struktur vollkommen unklar Java Basics - Anfänger-Themen 2
C funktion-ausgabe unklar Java Basics - Anfänger-Themen 10
C Ausgabe unklar Java Basics - Anfänger-Themen 5
R Basics unklar.. Java Basics - Anfänger-Themen 13
S Fehlermeldung bei switch unklar Java Basics - Anfänger-Themen 19
T BufferedReader unklar Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben