AUGE_OHR hat geschrieben:wenn ich nun eine Class C from ClassA, ClassB machen würde könnte man ja "beide" iVAR
ansprechen ... aber wenn beide iVAR nun ::nProzent heissen ? ... geht das überhaupt ?
Zur Auflösung der Werte hat ja Olaf bereits geschrieben, ich dachte bisher es geht um Controls auf einem Dialog !
Wenn du mehrere "freie Objekte" hast, musst du halt irgendwo (AppObject, Stammfenster, Dialogfenster, in einer Funktion ...) - das heißt, je Einzelfall an der besten Position - diese speichern und danach darauf zugreifen. Einmal fürs ganze Programm: AppObject oder in einer Funktion wie z.B. SetAppWindow() ...
Zur Frage "geht das ...":
JEDE Klasse in JEDER Verschachtelungsebene darf gleiche Variablen und Methoden haben.
Natürlich kann es da Nebenwirkungen geben, wenn eine abgeleitete Klasse eine Methode oder iVar mit gleichem Namen neu definiert.
Bei den Variablen kann man das am Besten vergleichen mit der bekannten Situation von PRIVATE und LOCAL Variablen:
Code: Alles auswählen
private cName := "Test"
? MeinUpper(cName) , cName -> TEST Test // Parameter als Kopie übergeben
? MeinAnders(cName), cName -> TEST TEST // Parameter als Kopie übergeben
...
function MeinUpper(cName) // cName als Parameter == LOCAL
cName := upper(cName) // LOCAL cName überdeckt PRIVATE cNAME
return cName
...
function MeinAnders() // kein Parameter übernommen
cName := upper(cName) // nur auf PRIVATE cNAME zugegriffen
return cName
Bisher hätte man natürlich auch eine LOCAL cName und die PRIVATE M->cName gleichzeitig ansprechen können. Ähnlich verhält es sich mit verdeckten iVars und Methoden in Objekten.
::cName -> iVar dieses Objektes == dieser Klasse (wenn implementiert) oder einer früheren.
::MySuperClass:cName -> iVar der Superklasse, z.B. weil ::cName neu definiert wurde.
Fast wie bei C/C++
es geht fast alles, nur die Ergebnisse entsprechen nicht immer unseren Erwartungen ...