[C#] Class inheritance

VB.NET, C#, JAVA, alle programmingtalen kunnen hier besproken worden.

[C#] Class inheritance

Berichtdoor R0berto[] » do feb 08, 2007 19:41

ik snap nog niet helemaal hoe class inheritance werkt, en daarom vraag ik het hier:

ik heb een serverclass geschreven, met daarin een public virtual void HandeClient(). Nou wil ik die gaan overschrijven, maar daarin gebruik ik enkele variabelen.

maar die vars bestaan niet in de child-class, dus volgens VS kan ik die niet gebruiken.
Maar als ik die vars dan declare in de child-class, dan obfuscate ik de parent-class-vars....

dus kan iemand me uitleggen hoe het precies zit met het erven van vars enzo?
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor AtleX » do feb 08, 2007 20:04

Als je een class extend heb je toch automatisch toegang tot de private en public vars, maar niet tot de protected members? Of was het nou andersom, wel de protected maar niet de privates en publics? Ik weet het niet meer. :(
Avatar gebruiker
AtleX
 
Berichten: 147
Geregistreerd: za okt 28, 2006 9:35

Berichtdoor AtleX » do feb 08, 2007 20:11

Code: Selecteer alles
class klasse1
    {
        private string var1;
        public string var2;
        protected string var3;

        public klasse1()
        {
            this.var1 = "blaat1";
            this.var2 = "blaat2";
            this.var3 = "blaat3";
        }
    }

    class klasse2 : klasse1
    {
        public klasse2()
        {
            MessageBox.Show(this.var2);
            MessageBox.Show(this.var3);
        }
    }

Als ik een nieuwe instantie van klasse2 aanmaak zie ik 2 messageboxes die "blaat2" en "blaat3" tonen. Privates zijn dus echt privates, en publics en protected properties zijn dus wel accesible in the child class.
Avatar gebruiker
AtleX
 
Berichten: 147
Geregistreerd: za okt 28, 2006 9:35

Berichtdoor R0berto[] » do feb 08, 2007 20:18

privates moet ik dus niet kiezen bij het schrijven van een parent-class (als ik die in child-classes wil gebruiken.

Wat is dan het nut van privates?? beter een public teveel dan te weinig zou ik zeggen...

ik dacht nl dat privates wel binnen een child-class accessable zouden zijn...
Avatar gebruiker
R0berto[]
TWnet Crew
 
Berichten: 280
Geregistreerd: vr aug 11, 2006 22:08

Berichtdoor TrafeX » do feb 08, 2007 20:25

Zelfde als in PHP 5, dus kan ik ff helpen :P

Privates zijn alleen beschikbaar voor de class waarin ze gedefineerd zijn.
Protected zijn beschikbaar voor de class waarin ze gedefineerd zijn, en elke class die daarvan extend.
Public is voor alle classes beschikbaar en kan ook van buiten een class aangeroepen worden.
Voorbeeldje:
Je hebt een user class en een rights class extend van de user class. Een variable zoals 'password' heeft de rights class niks mee te maken, dus is private.
Een variable zoals 'user_id' kan de right class wel gebruiken, maar wil je misschien niet beschikbaar maken voor andere classes. Die wordt dus protected.
Het is vooral voor jezelf handig dat je weet welke variabelen van buiten de class aangeroepen of gewijzigd kunnen worden.

(Nogmaals, zo werkt het in PHP 5 ;))
Avatar gebruiker
TrafeX
TWnet Crew
 
Berichten: 315
Geregistreerd: vr aug 11, 2006 11:39
Woonplaats: Woerden


Keer terug naar Programming

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron