Aufrufen einer Methode einer abgeleiteten Klasse von Oberkla

Status
Nicht offen für weitere Antworten.

sep

Mitglied
Hello everybody out there using Java ;-)

mein Prob:

ich habe eine Oberklasse HALGS, von der ich mehrere Klassen abgeleitet habe.
HALGS besitzt alle Methoden (Getter/setter) seiner "Kinder" (nur die abgespeckten ohne code)
HALGS ist nicht abstract.

eine Funktion (z.B. add() ), die als Parametertyp die Oberklasse benutzt, soll aber auf die Methoden der Kindklassen zugreifen können:

HALGS
- Term
- Number
- Error
- Variable
- Function


Code:
public HALGS add(HALGS a, HALGS b) {    // die übergebenen (beim Aufruf..., also z.B. add(Number a, Variable b) ) Objekte sind nicht vom Typ HALGS sondern von einem abgeleiteten, also z.B. Term, Number, ...
    if (a.isEmpty() == true) {                    // es wird isEmpty() der Klasse HALGS aufgerufen, ich möchte aber die Funktion isEmpty der jeweiligen Unterklasse erreichen.
        
    }
}

public class HALGS {
	public boolean isEmpty() {
		return true;
	}
}

public class Number implements HALGS {
	public boolean isEmpty() {
                    if (entscheiden ob true oder false) {
                        return false;
                    }
                    else {
                        return true
                    }
	}
}


Vielen Dank schon mal im voraus, ich hope des is verständlich :)[/code]
 

Illuvatar

Top Contributor
Nun schwierige Sache, ich denke, das schönste wäre es schon, wenn du die Klasse abstract hättest... ansonsten würde mir noch etwas mit Reflection einfallen, in der Art:
Code:
public HALGS add(HALGS a, HALGS b) {
    Class<HALGS> clazz = a.getClass();
    Method isEmptyMethod = clazz.getMethod("isEmpty");
    Boolean isEmpty = (Boolean)isEmptyMethod.invoke();
    if (isEmpty.booleanValue()) {
        
    } 
}
 

Murray

Top Contributor
So ganz verstehe ich das Problem nicht:

1. Der Code dürfte so nicht übersetzbar sein: entweder ist HALGS ein Interface, dann kann z.B. Number dieses Interface implementieren ("class Number implements HALGS"). Oder HALGS ist eine Klasse, dann muss Number davon abgeleitet sein ("class Number extends HALGS"). Im Moments soll Number eine Klasse implementieren, was definitonsgemäß nicht geht,

2. M.E. stimmt dieser Kommentar einfach nicht:
Code:
public HALGS add(HALGS a, HALGS b) {    
    if (a.isEmpty() == true) {                  
          // es wird isEmpty() der Klasse HALGS aufgerufen, ich möchte aber die Funktion 
         // isEmpty der jeweiligen Unterklasse erreichen.
    }
}

Es spielt hier keine Rolle, dass a als HALGS deklariert ist; zur Laufzeit wird der terminale Type (also z.B. Number) herangezogen. Es wird also automatisch Number.isEmpty() aufgerufen, wenn a vom Typ Number ist.
 

Illuvatar

Top Contributor
Hmja, Murray hat natürlich eigentlich recht, ich hab nicht lange darüber nachgedacht, weil ich dachte, dass du das schon probiert haben wirst... :?
 
G

Guest

Gast
jo, hab mich da verschrieben, das sollte natürlich "Number extends HALGS" heißen :oops:

ich muss jetzt mit noch nem Oops kommen, des hat sich erledigt, war mein Fehler, sorry!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Nach Javascript alert , gleiche Webseite aufrufen Softwareentwicklung 3
T Webseite mit Abfrage über VB aufrufen Softwareentwicklung 3
A 2D subimage detection mit einer AI Softwareentwicklung 0
B Etliche Anfragen von einer IP ablehnen? Softwareentwicklung 2
F Datenspeicherung in Listen statt in einer Datenbank Softwareentwicklung 6
C Grundgedanken zu einer Scoring App Softwareentwicklung 7
stg File-Download ohne Speichern einer lokalen Kopie Softwareentwicklung 8
D Datenverwaltung einer App Softwareentwicklung 3
K Einlesen einer .dat-Datei (verschiedene Formate) | Entwicklung unter Einsatz von Design-Patterns Softwareentwicklung 0
B In einer virtuellen Maschine entwickeln (Virtual Box) Softwareentwicklung 5
L Parsen einer HTML Seite Softwareentwicklung 3
K Mindestanforderung einer Software Softwareentwicklung 7
C Wie kann ich ein Panel auf einer Tabelle plazieren? Softwareentwicklung 9
R PHP: Auslesen einer ID aus Radiobutton und Nutzung in SQL Softwareentwicklung 2
T Über Joins mehrere Schlüssel aus einer Tabelle auflösen Softwareentwicklung 7
C Darstellung einer dynamischen Bindung Softwareentwicklung 2
I Entwicklung einer UML - KLasse Softwareentwicklung 2
R static methode innerhalb einer klasse ! Softwareentwicklung 5
M In MSSQL ganze Spalte einer Tabelle in andere Tabelle kopier Softwareentwicklung 2
W Statische Klassen oder neue Instanz einer Klasse nutzen? Softwareentwicklung 11
T nur EIN objekt einer klasse erstellen ? Softwareentwicklung 2
m@nu Problem mit einer RegEx Softwareentwicklung 4
K Kommunnikation in einer Applikation Softwareentwicklung 17
K GUI "Inhalte" in einer Datenbank speichern Softwareentwicklung 2
S Überladen des Rückgabedatentypen einer Funktion Softwareentwicklung 7
G Befehl zum downloaden einer Website Softwareentwicklung 2
D Variablendeklaration in einer iterativen Methode = Böse? Softwareentwicklung 10
C Filterung von geraden und ungeraden Zahlen aus einer Datei Softwareentwicklung 4
D Name einer Instanz einer Klasse IN der Klasse erfahren ?? Softwareentwicklung 3
I Methode testen Softwareentwicklung 30
T Was passiert generell in der onClick Methode? Softwareentwicklung 2
H WEKA - Frage zu Methode in Evaluation Softwareentwicklung 2
M [OOP] Frage zu Methode-Namen / Funktionsweise Softwareentwicklung 9
R Ein Thread für eine Methode Softwareentwicklung 2

Ähnliche Java Themen

Neue Themen


Oben