Avatar
noName
Neregistrovaný
Avatar
noName:

Zdravím. Tak jsem zase zpět a o něco chytřejší (pečlivě studuji tutoriály). Narazil jsem na problém, který si nedokáži sám zodpovědět. Jde o to, že když mám dvě třídy a a chci dědit z bázové třídy metodu Metoda() do třídy Form1, tak mi to napíše, že není možné použít protected. A já myslel, že protected je viditelný ve třídě, kde byl definován + ve všech odvozených třídách

namespace WindowsFormsApplication2
{
    public partial class Class1 : Form1
    {
        protected void Metoda()
        {
            MessageBox.Show("Ahoj");
        }
    }
}

Přikládám project:
http://uloz.to/…ication2-rar

Předem děkuji.

 
Odpovědět 26.9.2013 18:36
Avatar
Odpovídá na noName
Michael Olšavský:

To, že mají metody stejného předka neznamená, že si sdílí protected proměnné. Protected se dá použít pouze třídami odvozenými od rodiče (u tebe Class1). Pokud by jsi tedy ve Form1 dědil od Class1 a ne od Form, bude to fungovat, ale nesmíš vytvářet novou proměnnou třídy. Ta metoda je tam jakoby byla private, jen dostupná z obou tříd.

Tzn. můžeš jí volat jen ve třídě, kde právě jsi a která tuto metodu buď obsahuje nebo jí dědí.

 
Nahoru Odpovědět 26.9.2013 18:56
Avatar
Odpovídá na noName
Luboš Běhounek (Satik):

protected je viditelný v třídě, do které patří a v třídách, které od ní dědí.

Form1 od tvé třídy nedědí - to dědění je obrácené - tvoje třída dědí od Form1, takže metodu ani vidět nemá. ;)

Nahoru Odpovědět 26.9.2013 18:57
:)
Avatar
noName
Neregistrovaný
Avatar
noName:

Hoši, díky za radu :D Nedošlo mi to :(

 
Nahoru Odpovědět 27.9.2013 7:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.