Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
pcrewik
Člen
Avatar
pcrewik:14.2.2014 21:36

Ahojte, ako sa dá dediť konštruktor?
Konkretne, hodil som ukážku, a chcel by som aby trieda Vetva (ktorá je potomkom triedy Some) mala rovnaký konštruktor ako trieda Some.

public class Some
  {
      private int a;
      private int b;

      public int Vaha { get; set; }

      public Some()
      {
          a= 10;
          b = 15;
      }


      public virtual void print()
      {
          Console.WriteLine("rodic" + a + "--" + b);
      }
      public override string ToString()
      {
          return (base.ToString());
      }
  }

  public class Vetva : Some
  {



       public Vetva()
           : base()
  {

  }

            public override void print()
      {
          Console.WriteLine("potomok" + a + "--" + b);
      }

  }
 
Odpovědět
14.2.2014 21:36
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na pcrewik
Jan Vargovský:14.2.2014 21:38

Přesně takhle jak jsi napsal. Btw, ten override ToString v té třídě Some je celkem zbytečný.

 
Nahoru Odpovědět
14.2.2014 21:38
Avatar
pcrewik
Člen
Avatar
pcrewik:14.2.2014 22:00

No ani nie tak celkom, ten override je tam preto ze potomok nerobí presne to isté co "rodič",
Console.Write­Line("rodic" ...
Console.Write­Line("potomok"­...
a i tak to čo som postol neskompiluje, lebo

Console.WriteLine("potomok" + a + "--" + b);

a v triede Vetva nemam definovane premenné a,b ktorým by konštruktor mal priradiť hodnoty
Ďakujem:)

 
Nahoru Odpovědět
14.2.2014 22:00
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na pcrewik
Jan Vargovský:14.2.2014 22:13

Oni tam jsou, ale jsou private. Jestli chceš, aby ty proměnné byly viditelné i v potomku (ale jen uvnitř) použij modifikátor protected.

Chybu by ti to mělo vyhodit, že ty proměnné ani nevidíš a né že nejsou inicializované :)

public class Some
{
    protected int a, b;

    public int Vaha { get; set; }

    public Some()
    {
        a = 10;
        b = 15;
    }

    public virtual void Print()
    {
        Console.WriteLine("rodic" + a + "--" + b);
    }
}

public class Vetva : Some
{
    public Vetva() : base() { }

    public override void Print()
    {
        Console.WriteLine("potomok" + a + "--" + b);
    }
}
 
Nahoru Odpovědět
14.2.2014 22:13
Avatar
pcrewik
Člen
Avatar
pcrewik:14.2.2014 22:38

Ďakujem :)

 
Nahoru Odpovědět
14.2.2014 22:38
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 5 zpráv z 5.