Laden...

Erbende Klasse erkennt Property der Basisklasse nicht

Erstellt von tothstar vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.260 Views
T
tothstar Themenstarter:in
3 Beiträge seit 2015
vor 8 Jahren
Erbende Klasse erkennt Property der Basisklasse nicht

Hallo zusammen,

ich habe folgendes Problem, ich habe eine Basisklasse mit dem public int x und eine Subklasse, die Subklasse soll dann den Wert von x aus der Basisklasse ausgeben, dieser ist jedoch immer null obwohl er im Main-Programm zugewiesen wurde.

namespace WW
{
    public class baseclass
    {
        public int x { get; set; }        
    }
    public class subclass: baseclass
    {
        
        public void a2()
        {
            Console.WriteLine(this.x);
        }
    }
}

das MainProgramm sieht wie folgt aus:

namespace WW
{
    class Program
    {
        static void Main(string[] args)
        {
            
            baseclass base1 = new baseclass();
            base1.x = 100;
            subclass sub1 = new subclass();
            sub1.a2();
            Console.ReadKey();

        }
    }
}

Hinweis von Coffeebean vor 8 Jahren

Ich habe mal den Titel editiert. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3. Wenn du einen besseren Vorschlag hast, dann editier ihn nochmal. Kein Suchender wird wissen, was mit dem Titel "Vererbung" gemeint ist, wenn er den Thread in der Suche findet.

P
441 Beiträge seit 2014
vor 8 Jahren

Hi,

du erstellst jeweils eine Instanz von der baseclass und von der subclass. Diese Instanzen sind unabhängig voneinander.

Was du willst wäre:


var sub = new subclass();
sub.x = 100;
sub.a2();

Vereinfacht:
Der Sinn von Vererbung in dem Moment ist den "Inhalt" der baseclass in der subclass bereitzustellen.

T
tothstar Themenstarter:in
3 Beiträge seit 2015
vor 8 Jahren

ok klingt soweit sinvoll, nun stellen wir uns aber mal folgendes vor, ich arbeite mit SQL habe dort die Klasse SQL, in dieser wird dann eine Methode connect ausgeführt, nun habe ich ja dort das Connection Objekt instanziert und würde eben diese gerne an die Subklasse querys weitergeben. Gibt es hierzu keine Möglichkeit? Oder ist mein Design völlig falsch und ich sollte in die Klasse SQL einfach mehrere Methoden reinpacken, dann kann ich ja das Connection Object weiterverwenden.

P
441 Beiträge seit 2014
vor 8 Jahren

Ganz genau so, wie du das mit einer Property machen kannst, kannst du das auch mit Methoden machen.

Das Problem bei dem Design ist, dass du pro Instanz einer erbenden Klasse, die eine bestimmte Query Funktion implementiert eine eigene DB Verbindung aufbauen würdest.

Für genau diesen Anwendungsfall gibt es verschiedene Design-Pattern, z.B. ein Repository.
Das sind absolute Grundlagen von OOP, am besten schaust du dir diese einmal an (Buch o.ä.).

T
tothstar Themenstarter:in
3 Beiträge seit 2015
vor 8 Jahren

vielen Dank für die Tipps, das mit dem Repository schau ich mit mal an und natürlich auch die entsprechenden Grundlagen der OOP. THX!