Metody Wirtualne (base.*)

Metody Wirtualne (base.*)
DC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Witam mam problem z metodami wirtualnymi, pokaże kod :

Klasa Main :

Kopiuj
using System;

namespace Nauka
{
    class Main
    {
        
        public virtual void Pensja(int a)
        {
            int b = 10;
            a =+ b;  
        }

    }
}

Klasa Class1 :

Kopiuj
using System;

namespace Nauka
{
    class Class1 : Main
    {
        public override void Pensja(int a)
        {
            base.Pensja(a);
            Console.WriteLine(b);
        }
    }
}

Problem w tym że nie mam dostępu do zmiennej 'b'

nerf
  • Rejestracja: dni
  • Ostatnio: dni
1

Zmienna b jest dostępna tylko w zasięgu metody Pensja w klasie Main.

DC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Czyli nie da się zmodyfikować programu aby mieć do niej dostęp ?

nerf
  • Rejestracja: dni
  • Ostatnio: dni
1

Oczywiście, że się da. Musisz tak zmodyfikować kod w metodzie z klasy Main by mieć dostęp do tamtej zmiennej z innych miejsc programu ;)
Np. poprzez przechowywanie jej w jako pola w klasie Main lub zwracanie owej wartości.

DC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Mógłbyś pokazać to obrazowo w postaci bardzo prostego kodu ?

nerf
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
using System;

namespace Nauka
{
	class Main
	{
		public int b; 
		public virtual void Pensja(int a)
		{
			b = 10;
			a = +b;
			
		}

	}
	class Class1 : Main
	{
		public override void Pensja(int a)
		{
			base.Pensja(a);
			Console.WriteLine(b);
			
		}
	}

	class App
	{
		static void Main()
		{
			Class1 c1 = new Class1();
			c1.Pensja(5);
		}
	}
} 
DC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Aha, podziekował bardzo :D Nie pomyślałem o tym żeby z dziedziczenia wziąć zmienna

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
Kopiuj
a =+ b;  

Prawdopodobnie najpiękniejszy kawałek kodu C# w historii.
Tylko po co takie coś? :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.