Konstruktory klasy w klasie odziedziczonej, dostęp do pól w klasie dziedziczącej

0

Witam, musiałem napisać drugi watek na forum ponieważ myślę że porusza inna kwestię związaną z dziedziczeniem. Otóz mam kod:

 public abstract class DataBaseConfig
    {
        private string dbAddress { get; set; }
        private int dbPortDefault { get; set; }
        private string dbLogin { get; set; }
        private string dbPass { get; set; }
        private bool connStat { get; set; }
        private string connString { get; set; }
 
        public abstract void Connect();                     //Abstrakcyjna metoda do zaimplementowania
 
        public DataBaseConfig()                             //1 Konstruktor klasy
        {
            dbAddress = "Server address";
            dbPortDefault = 0;
            dbLogin = "Database admin login";
            dbPass = "Database admin password";
            connString = "";
            connStat = false;
        }
 
        public DataBaseConfig(string dbServerAddress, int dbDefaultPort, string dbAdminLogin, string dbAdminPass)   //2 Konstruktor klasy
        {
            dbAddress = dbServerAddress;
            dbPortDefault = dbDefaultPort;
            dbLogin = dbAdminLogin;
            dbPass = dbAdminPass;
            connString = "";
            connStat = false;
        }
    }
 
    public override class MsSqlConfig : DataBaseConfig
    {
        public void Connect()
        {
            MessageBox.Show("XXX");
        }
    }
 
    public class MySqlConfig : DataBaseConfig
    {
        public override  void Connect()
        {
            MessageBox.Show("YYY");
        }
    }

Czy klasy dziedziczące będą miały dostęp do tych dwóch konstruktorów klasy nadrzędnej? tak abym mógł wstępnie zadeklarować pola wartościami? czy będę musiał pisać konstruktory klas dla każdej klasy dziedziczącej z osobna? trochę było by to bez sensu ponieważ musiałbym za każdym razem przepisywać ten sam kod, chciałem pójść na łatwiznę i napisać tak żeby konstruktory klasy nadrzędnej były obligatoryjnie dziedziczone jako konstruktory klas dziedziczących. Oprócz tego jak uzyskać dostęp do pól klasy nadrzędnej, z definicji wynika że klasy dziedziczą po nad klasie wszystko a tu mi VS nie pozwala użyć np. w klasie MsSqlConfig pól z klasy DataBaseConfig :/

Pozdrawiam
Oskar

0
osamex napisał(a):

Czy klasy dziedziczące będą miały dostęp do tych dwóch konstruktorów klasy nadrzędnej? tak abym mógł wstępnie zadeklarować pola wartościami? czy będę musiał pisać konstruktory klas dla każdej klasy dziedziczącej z osobna? trochę było by to bez sensu ponieważ musiałbym za każdym razem przepisywać ten sam kod, chciałem pójść na łatwiznę i napisać tak żeby konstruktory klasy nadrzędnej były obligatoryjnie dziedziczone jako konstruktory klas dziedziczących.

Z konstruktora klasy dziedziczącej możesz wywoływać konstruktor klasy bazowej w ten sposób: http://msdn.microsoft.com/en-us/library/hfw7t1ce%28v=vs.100%29.aspx

Oprócz tego jak uzyskać dostęp do pól klasy nadrzędnej, z definicji wynika że klasy dziedziczą po nad klasie wszystko a tu mi VS nie pozwala użyć np. w klasie MsSqlConfig pól z klasy DataBaseConfig :/

Oczywiście, że nie pozwala, bo pola oznaczyłeś jako private, a do takich nie ma dostępu z innych klas. Poczytaj o protected.

1 użytkowników online, w tym zalogowanych: 0, gości: 1