Nedarvning - Begrænsninger

Tags:    java

<< < 123 > >>
Hej med jer,

Den eneste begrænsning jeg kan komme frem til, er at der ikke findes multipel nedarvning i JAVA, dvs man skal inddele alt i subklasser, da man ikke kan hente fra superklassen.

Hvad er der ellers?? Er der nogen som har nogle forslag??


Hjælp påskønnes!!



Hej igen Bertel,

Ok, så tog jeg fejl af overloading.
Override så mener følgende: hvis man har en metode i subklassen som har den eksakte samme signatur som superklasse metoden, så vil metoden i subklassen blive brugt i stedet.
Dvs. man overskriver en metode som allerede fandtes i superklassen.



Jeg opfatter din brug af override og overload som værende to ord for de samme?

Så vidt jeg forstår kan man ikke arve den samme funktion fra to interface class'er, dem kan man ikke skelne. Kun funktioner der er implementeret kan arves.



Hvis en klasse implements to interfaces med den samme metode, vil det kun være muligt at lave én implementering af metoden.



Nej det jeg mener er:

override = overskrive / Man kan lave sin egen specialisering
overload = Flere funktioner med forskellige argumenter/parametre af samme navn.



Nedarvning virker på samme måde i Java og C#. Man nedarver metoderne men IKKE constructoren.

Hmm... Kan godt være det er mig der husker galt.. Men hvad bruger man så super() til?



Hmm... Kan godt være det er mig der husker galt.. Men hvad bruger man så super() til?


Super(parameter) bruger man til at kalde constructoren i superklassen internt fra subklassen. Det har man brug for, for at kunne flytte parametre fra subklassen op i superklassen.

Det er netop forskellen på metoder og constructors. I metoderne behøver man ikke kalde super.methodName(parameter) internt i methodName(parameter) i subklassen. Det sker automatisk, da metoder bliver nedarvet.



Indlæg senest redigeret d. 07.06.2008 01:35 af Bruger #13106
OG super() findes naturligvis ikke i realistiske sprog der har multible arv.



OG super() findes naturligvis ikke i realistiske sprog der har multible arv.


super/base findes kun i ubetydelige sprog som Java, C#, VB.:lol:



Hmm... Kan godt være det er mig der husker galt.. Men hvad bruger man så super() til?


Super(parameter) bruger man til at kalde constructoren i superklassen internt fra subklassen. Det har man brug for, for at kunne flytte parametre fra subklassen op i superklassen.

Det er netop forskellen på metoder og constructors. I metoderne behøver man ikke kalde super.methodName(parameter) internt i methodName(parameter) i subklassen. Det sker automatisk, da metoder bliver nedarvet.

Godt nok. Så er vi enige.



OG super() findes naturligvis ikke i realistiske sprog der har multible arv.


Well...jo, det gør det da, man kan godt kalde superklassens constructor eller implementeringer (det hedder bare ikke 'super()'):

Fold kodeboks ind/udKode 


Output er:
Fold kodeboks ind/udKode 


Superklassens default constructor kaldes implicit og det kan jeg ikke komme udenom. Jeg kalder så selv superklassens version af 'function()' efter at min SubClass klasse har gjort, hvad den vil.



Indlæg senest redigeret d. 09.06.2008 14:41 af Bruger #2695
<< < 123 > >>
t