Brak dostępu do pola klasy - dlaczego?

0

Mam pytanie z podstaw obiektowości:

using System;

namespace Klasy1
{
    public class echo
    {
        public string napis;

        public void WczytajNapis()
        {
            System.Console.WriteLine("Podaj napis");
            napis = System.Console.ReadLine();
        }

        public void PokazNapis()
        {
            System.Console.WriteLine("Twoj napis:");
            System.Console.WriteLine(napis);
        }
    }

    class echo2
    {
        public void pokaz2()
        {
            System.Console.WriteLine(napis);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            echo2 obiekt_echo2 = new echo2();
            obiekt_echo2.pokaz2();
            System.Console.ReadLine();
        }
    }
}

Dlaczego pole napis nie jest obsługiwane przez klasę echo2 (...does not exist in the current context) mimo specyfikatora public ?

0

Bo klasa echo2 nie posiada pola o nazwie napis. Albo zapomniałeś o dodaniu dziedziczenia po echo albo nie wiesz jak to działa :P

0

musisz utworzyć obiekt klasy echo i przekazać "napis" do obiektu klasy echo2. Albo "napis" musi być polem statycznym, tylko, że wtedy nie będziesz mógł go modyfikować.

0

Specyfikator public wskazuje na to że możesz dostać się do pola z zewnątrz, like this:

obiekt.pole =5; 

Jeśli dałbyś private to wówczas musiałbyś dostawać się np przez get i set, like this:

obiekt.setPole(5); 

Aczkolwiek nie ma to związku z tym co chcesz zrobić. W Twoim przypadku masz 2 deklaracje obiektów (czyli klasy). Pierwsza klasa zawiera pole napis oraz metody do wczytania i wyświetlenia owego pola. Druga klasa zawiera tylko i wyłącznie wyświetlenie zmiennej "napis". Tyle tylko że te klasy w żaden sposób się nie łączą.
Obrazując to można powiedzieć że masz 2 klasy - Samochód oraz Dom. Klasa samochód zwiera pole silnik (czyli twój napis). Masz tam metody dzięki którym deklarujesz że silnik to np 1.9TDI oraz możesz to wyświetlić.
No a niżej masz klasę Dom która nie zawiera żadnych pól, jest goła (powiedzmy 4 ściany i dach) a mimo to próbujesz wyświetlić informację na temat silnika. Teraz widzisz że to nie ma sensu ? :)

0

Hmm...jak mogę na forum oznaczyć składnię?

Stosując się do informacji w jebiącej po oczach swoją żółtością ramce z prawej strony pola edycji postu.

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