Wątek przeniesiony 2018-06-23 22:32 z C# i .NET przez somekind.

Co oznacza "base"

0

Witam, szukałem w internecie, ale nie mogę znaleźć satysfakcjonującej odpowiedzi.
Co oznacza "base" w C#?
Może będzie łatwiej jak opowiecie na przykładzie.

Mamy np stworzoną przez kogoś klasę, i nie znamy jej implementacji, tylko interfejs:

Klasa Licznik:

 public class Licznik
    {

        public Licznik(int cyfry) { }  //konstruktor, pobiera ile pozycji będzie zawierał licznik, np. dla poz=3 licznk liczy od 000 do 999

        public void zero() { } //ustawia stan licznika na zero

        public int czytaj() { int a = 0; return a; }    //odczytuje stan licznika

        public void impuls() { }   //zwiększa stan licznika o jeden, po dojściu do maksimum kolejne wywołania nie zwiększają już stanu licznika

        protected void impuls_ujemny() { } //zmniejsza stan licznika o jeden, po dojściu do zera kolejne wywołanie nie zmniejszają już stanu licznika

        protected void ustaw(int poz) { }  //ustawia stan licznika na
    }

Oraz Klasę dziedziczącą:

public class LicznikOdw : Licznik
    {
        public LicznikOdw(int cyfryy)
        {
            base(cyfryy);
        }
         public void zero()
        {
            base.zero();
        }
    }

Więc ktoś mógłby wyjaśnić?

0

Odwołanie do klasy z której dziedziczysz.

0

a czym różni się

base(cyfryy)

od

base.pisz()
2

base(cyfryy) to wywołanie konstruktora klasy z której dziedziczysz.
A base.pisz wywoła metodę pisz z klasy z której dziedziczy.

Spróbuj zrobić tak :

	class A
	{

		public void methodW()
		{
			Console.WriteLine("klasa A");
		}
	}

	class B : A
	{
		public void wypisz()
		{
			base.methodW();
			this.methodW();
		}
		public void methodW()
		{
			Console.WriteLine("klasa B");
		}
	}

Wypisze ci
klasa A
klasa B

Ponieważ base traktuje sie jako obiekt z którego sie dziedziczy.

0

Czyli załóżmy teraz mam zrobić takie zadanie.
Wykorzystując mechanizm dziedziczenia napisz klasę Licznik_odwrotny z konstruktorem i
metodami zero, czytaj i impuls, który umożliwia liczenie do tyłu, np. od 999 do 000 (każdy impuls
zmniejsza stan licznika o jeden). Klasa Licznik_odwrotny ma dziedziczyć z Licznik.

public class Licznik_odwrotny : Licznik
    {
        public Licznik_odwrotny(int cyfryy)
        {
            base(cyfryy);
            int baza = 1, wynik=0;
            for(int i = 0; i < cyfryy; i++)
            {
                wynik += baza * 9;
                baza *= 10;
            }
            base.ustaw(wynik);

        }
        public void zero()
        {
            base.zero();
        }
        public void czytaj()
        {
            base.czytaj();
        }
        public void impuls()
        {
            base.impuls_ujemny();
        }
    }
}

jak myślicie, dobrze?

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