Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908

    [C#] Codice, ereditarietà e campi protected, problema

    Ho questo codice:

    codice:
    using System;
    using System.Drawing;
    
    
    namespace ConsoleApplication1
    {
        class Persona
        {
            protected string Nome = "MioNome";
            protected string Cognome = "MioCognome";
        }
        class Dati : Persona
        {
            public string NickName = "MioNick";
        }
    
        class MainEntryPoint
        {
            static void Main()
            {
                Dati estrai = new Dati();
                Console.WriteLine("NOME: " + estrai.Nome);
            }
        }
    }
    Ora, i membri protected dovrebbero essere accessibili sia all'interno della classe stessa, che da quelle derivate, ma perchè allora questo codice non va e mi dice che Nome è inaccessibile a causa del livello di protezione??
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: [C#] Codice, ereditarietà e campi protected, problema

    Originariamente inviato da dwb
    Ho questo codice:
    [...]
    Ora, i membri protected dovrebbero essere accessibili sia all'interno della classe stessa, che da quelle derivate, ma perchè allora questo codice non va e mi dice che Nome è inaccessibile a causa del livello di protezione??
    Perché MainEntryPoint non eredita dalla classe Dati, quindi non può vedere i membri con visibilità protected, a maggior ragione i private, ma solamente i public.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    E non ce modo di far vedere a MainEntryPoint i campi protected?
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  4. #4
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Modificato in questo modo e ora va:

    codice:
    using System;
    using System.Drawing;
    
    
    namespace ConsoleApplication1
    {
        class Persona
        {
            protected string Nome = "MioNome";
            protected string Cognome = "MioCognome";
        }
        class Dati 
        {
            public string NickName = "MioNickName";
        }
    
        class MainEntryPoint : Persona
        {
            static void Main()
            {
                MainEntryPoint estrai = new MainEntryPoint();
                Console.WriteLine("NOME: " + estrai.Nome);
            }
        }
    }
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì ... ma a questo punto la classe Dati non ha piu' senso ...

  6. #6
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Originariamente inviato da oregon
    Sì ... ma a questo punto la classe Dati non ha piu' senso ...
    Infatti, perciò chiedevo se nel primo codice che ho postato, facendo qualche modifica, si poteva interagire con i campi protected.
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da dwb
    Infatti, perciò chiedevo se nel primo codice che ho postato, facendo qualche modifica, si poteva interagire con i campi protected.
    Non hai capito il corretto uso della visibilità nell'ambito della programmazione ad oggetti.

    Anche tralasciando questo, che senso avrebbe ciò che chiedi?
    Tu rendi inaccessibili i membri di una classe all'esterno...e poi vuoi accedere a questi membri dall'esterno... in tal caso, rendili accessibili pubblicamente, oppure evita di accedervi.

    Non puoi andare a messa e stare a casa.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    Utente di HTML.it L'avatar di dwb
    Registrato dal
    Mar 2001
    residenza
    My IDE! :)
    Messaggi
    2,908
    Tnk alka!
    ~Il nome di una variabile deve riflettere il suo scopo e non il suo tipo di dati, NET Framework.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.