Vererbungsfrage

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

wir behandeln gerade das Thema Vererbungen.

Also wir haben eine Datei: Start.java & eine Datei End.java
Die End.java soll in eine Oberklasse und zwei Unterklassen aufgteilt werden.

Start.java

Code:
... hans.methode();....

das hans.methode(); ruft die methode() in End.java auf.
So jetzt kommt die methode(); einmal in die 1. Unterklasse und einmal in die 2. Unterklasse.
Wie sag ich dem hans.methode(), dass er auf zB die 1. Unterklasse zugreifen soll?
 

Sky

Top Contributor
hä ?

Was ist die Basisklasse, was die 1. UK und was die 2. UK ? Wo liegt die Methode ???
 

Murray

Top Contributor
Das legst Du bereits beim Instanziieren von hans fest; hans ist ja wohl ein Objekt einer der beiden von End abgeleiteten Klassen.

Code:
public class End {
  public void methode() {
     System.out.println( "Methode aus End");
  }
}

public class EndSub1 extends End {
  public void methode() {
     System.out.println( "Methode aus EndSub1");
  }
}

public class EndSub2 extends End {
  public void methode() {
     System.out.println( "Methode aus EndSub2");
  }
}

/* .. */

End hans1 = new End();
hands1.methode(); //--- liefert "Methode aus End"


End hans2 = new EndSub1();
hands2.methode(); //--- liefert "Methode aus EndSub1"


End hans3 = new EndSub2();
hands3.methode(); //--- liefert "Methode aus EndSub2"
 
G

Gast

Gast
Ich seh schon, mit dem Thema hab ich ganz schön Probleme.
Könnte mir jemand im Messenger Hilfe beim vorgehen der Aufgabe leisten? Tips etc.?
 
G

Gast

Gast
ICQ oder MSN Messenger.
Möchte ja nicht hier mein Programm posten, da hier sicherlich au jemand mal von der Uni reinpostet oder nachguckt und das wäre dann nicht so gut, weil Abgabepflicht.

Am Programm das zu erklären, wäre vielleicht einfacher.
 
G

Gast

Gast
Also, momentanes Problem:

habe in der Oberklasse END eine Methode, die auf eine Methode in der Unterklasse zugreifen will. Wie ist das zu realisieren?
 

Murray

Top Contributor
Du willst in der Basisklasse auf eine in der davon abgeleiteten Klasse deklarierten Methode zugreifen? Das könnte man zwar mit einem expliziten Cast
Code:
((AbgeleiteteKlasse)this).methodeAusAbgeleiteterKlasse();
realisieren, aber irgendwie ist das Design mehr als schräg.
 
G

Gast

Gast
joa, daher würd ich gern hilfe im messenger und per email in anspruch nehmen, damit sich der Profi, der ja hier rumschwirt, sich genau das prog ansehen kann...
 

dR.LoL

Bekanntes Mitglied
LoL....
Guck mal hier, anhand von PHP ein wirklich sehr einfaches Beispiel zu Vererbungen, da braucht kein messenger dafür...

http://tut.php-q.net/klassen.html
(Ich mag dieses Beispiel so :D)

Rofel, also EMail ist wohl noch schlechtere Kommunikation für eine Problemlösung als Forum... ;-)

Mein erster Tipp:
- Gehs locker an und sei offen neues zu lernen!
 

Murray

Top Contributor
Hier noch ein Beispiel in Java
Code:
public class Test {

	public class Basis {
	
		public Basis() {
		
			System.out.println( "  Basis-c'tor:      getString1() -> " + getString1());
			System.out.println( "  Basis-c'tor:      getString2() -> " + getString2());
		
		}
		
		public String getString1() {
			return "X1 aus " + getClass().getName();
		}

		public String getString2() {
			return "X2 aus " + getClass().getName();
		}
		
	}
	
	public class Abgeleitet extends Basis {
	
		public Abgeleitet() {
			super();

			System.out.println( "  Abgeleitet-c'tor: getString1() -> " + getString1());
			System.out.println( "  Abgeleitet-c'tor: getString2() -> " + getString2());
			System.out.println( "  Abgeleitet-c'tor: getString3() -> " + getString3());

		}
	
		/*
		  * Hier wird die Methode aus der Basisklasse überschrieben
		 */
		public String getString2() {
			return "Y2 aus " + getClass().getName();
		}

		/*
		  * Diese Methode gibt es in der Basisklasse nicht
		 */
		public String getString3() {
			return "Y3 aus " + getClass().getName();
		}

	}
	
	
	public Test() {
		System.out.println( "\nErzeuge Basis o1:");
		Basis 	   o1 = new Basis();

		System.out.println( "\nErzeuge Abgeleitet o2:");
		Abgeleitet o2 = new Abgeleitet();
		
		System.out.println( "\nErzeuge Abgeleitet o3:");
		Basis      o3 = new Abgeleitet(); //--- Abgeleitet ist Spezialform von Basis und kann daher zugewiesen werden
		
		System.out.println( "\nCaste Basis o3 auf Abgeleitet o4:");
		Abgeleitet o4 = (Abgeleitet)o3;  //--- expliziter Cast erforderlich

		//System.out.println( "\nErzeuge Basis o5:");
		//Abgeleitet o5 = new Basis();      //--- Compile-Fehler: incompatible types, found Test.Basis, required Test.Abgeleitet
		
		System.out.println();
		
		System.out.println( "o1.getString1(): " + o1.getString1());
		System.out.println( "o1.getString2(): " + o1.getString2());
		//System.out.println( "o1.getString3(): " + o1.getString3()); //--- Compile-Fehler: cannot find symbol method getString3(), location class Test.Basis

		System.out.println();

		System.out.println( "o2.getString1(): " + o2.getString1());
		System.out.println( "o2.getString2(): " + o2.getString2());
		System.out.println( "o2.getString3(): " + o2.getString3());

		System.out.println();

		System.out.println( "o3.getString1(): " + o3.getString1());
		System.out.println( "o3.getString2(): " + o3.getString2());
		//System.out.println( "o3.getString3(): " + o3.getString3()); //--- Compile-Fehler: cannot find symbol method getString3(), location class Test.Basis

		System.out.println();

		System.out.println( "o4.getString1(): " + o4.getString1());
		System.out.println( "o4.getString2(): " + o4.getString2());
		System.out.println( "o4.getString3(): " + o4.getString3());
		
	}
	
	public static void main( String[] args) {
		new Test();
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Vererbungsfrage Java Basics - Anfänger-Themen 12
J Vererbungsfrage Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben