Avatar billede ahara Nybegynder
19. november 2006 - 16:05 Der er 5 kommentarer

Arv i c#

Jeg har følgende arvehieraki:

//Baseklasse
Medarbejder
- Metode test();

//Klasse der arver fra Medarbejder
Coop : Medarbejder
- Metode test(int x, int y)

Programmet virker fint når jeg vil oprette et Medarbejder objekt og benytte test metoden.

Problemet opstår når jeg vil lave en instans af Coop og kalde metoden test. Så får jeg mulighed for at benytte test fra Medarbejder klassen eller test fra Coop klassen. Jeg ønsker kun at skulle se metoden fra Coop klassen, men hvordan gøres dette.

Hvis jeg benytter new kan jeg overskrive funktionen men ikke skjule den og omvendt.
Avatar billede davidfossil Nybegynder
19. november 2006 - 17:02 #1
Du kan ikke skjule en metode der tilhører et lavere niveau af din klasse - i så fald ville hele idéen om arv og polymorphism jo ryge på gulvet. Du kan override en abstrakt metode og du kan "skjule" metoder bag nye metode med samme signatur (vha keywordet new). Med den sidste løsning vil jeg dog alligevel kunne caste en Coop til et objekt af typen Medarbejder og kalde test() metoden alligevel.

Med risiko for at lyde gammelklog, vil jeg anbefale dig at tage fat i en bog der beskæftiger sig med grundlæggende objektorienterede begreber, for at få en grundig forståelse for hvad der kan lade sig gøre og hvad der ikke kan.
Avatar billede kalp Novice
19. november 2006 - 21:56 #2
Det giver nu heller ikke mening, at man arver fra en klasse og så vil man ikke kendes ved dens indhold;o)

(eller noget af dens indhold)
Avatar billede kalp Novice
19. november 2006 - 21:57 #3
om ikke andet så skal metoden i medarbejder være private.. er den public eller protected kommer den med ved arv..

så erklær den private.
Avatar billede davidfossil Nybegynder
20. november 2006 - 16:34 #4
Well, hvis den er private er den - logisk nok - jo heller ikke public ved direkte brug af Medarbejder-klassen. Som jeg sagde i går er det noget helt basalt objektorienteret tankegang der skal til :)
Avatar billede kalp Novice
10. januar 2007 - 21:05 #5
ahara :> Man må antage du har fået noget ud af vores indlæg og blot har valgt ikke at kommentere yderligere?

personligt foretrækker jeg feedback fra dem jeg hjælper
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester