Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Diskuze: dedenie konštruktora c#

C# .NET .NET (C# a Visual Basic) dedenie konštruktora c# American English version English version

Avatar
pcrewik
Člen
Avatar
pcrewik:

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ý
Redaktor
Avatar
Odpovídá na pcrewik
Jan Vargovský:

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:

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ý
Redaktor
Avatar
Odpovídá na pcrewik
Jan Vargovský:

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  +2 14.2.2014 22:13
Avatar
pcrewik
Člen
Avatar
pcrewik:

Ď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.