Mi a külömbség ezek közt? C#
Van két osztály legyen A az ös B pedig a gyerek osztály.
Az A ban vannak adattagok,függvények és virtuális függvények is.
A B ben is vannak adattagok,függvények és egy overridolt metódus is.
Azt nem értem,hogy ezek miben külömböznek.
B b = new B();
A b =new A();
Utánnanéztem a polimorfizmusnak de nem látok köztük semmit amiben külömböznének egymástól.
Ugyanis mindkettő változat esetében mindig ugyanaz történik.
Nincs külömbség én nem látok.
Egyrészt: külöNbség.
Másrészt: a polimorfizmus az szerintem nem ez. Itt a példádban a statikus és a dinamikus típusok egyeznek. Szóval tényleg semmi különbség.
De mondjuk ha megfordítanád a new-kat, esetleg.
Nem is értem a kérdést.
Példányosítasz két különböző osztályt, hogy hogy mi a különbség köztük?
Jajj de buta vagyok így tényleg semmi különbség.
Így gondoltam:
B b = new B();
A b =new B();
De ez esetben:
BatisTipus obj = new GyerekTipus()
Ebben az esetben nem fogom tudni elérni a GyerekTipus adattagjait az obj objektummal.Úgy,hogy hülyeség ez az egész.
Semmire sem használható.
Nem értem.
Én nem tudok C# nyelven. De azért kipróbálhatnál egy virtuális függvényt, és elmondhatnád, hogy mi történt.
(emellett pedig: ha te nem érted, biztosan hülyeség úgy, ahogy van, tényleg, veheted így, csak ezzel nem leszel előrébb)
Elmagyarázom.
Itt van ez a kód:
-------
namespace PracticeConsoleAppProj {
using System;
internal class Mammal
{
string name;
internal Mammal(string name): base()
{
this.name = name;
Console.WriteLine("Mammal Constructor");
}
internal string Name
{
get;
set;
}
internal virtual void Sound()
{
Console.WriteLine("Mammal sound");
}
}
internal class Dog: Mammal
{
bool isBite;
internal Dog(string name): base(name)
{
this.isBite = false;
Console.WriteLine("Dog Constructor");
}
internal bool IsBite
{
get;
set;
}
internal override void Sound()
{
Console.WriteLine("Dog Sound");
}
}
internal class Program {
//Start method
private static void Main(string[] args)
{
Dog dog = new Dog("Tapló");
Mammal dog2 = new Dog("Pannusinkó");
}
}
}
A probléma az,hogy nem látom értelmét annak,hogy ezt az objektumot használjam: dog2
Az a baj,hogy a dog2 objektel nem tudom elérni az isBite változó értékét a nyilvános tulajdonságon keresztül.
Ezt a változót pedig nem volna jó ötelt az ős osztályban létrehozni mert nem mindeggyik emlős tud ugatni.
Érted ennek a dog2 nek egyáltalán nem lehet hasznát venni sehol.
Te mindent fordítva csinálsz?
Nem azért kell polimorfizmus, hogy ahová kutya kell, oda emlős is jó legyen. Hanem pont fordítva.
"Ahova kutya kell oda emlős is jó legyen"
Ezek szerint te így gondolod:
Dog dog = new Mammal();
De ez így nem jó.
Az én példámban úgy van ahogy azt kell.Nem bírjátok észrevenni vagy mi?
De, én észre bírom venni, pont ezért mondtam, hogy fordítva csinálod.
Mammal dog2 = new Dog("Morzsi");
És te ezt a szerencsétlent akarod ugattatni.
Miért? Akkor legyen:
Dog dog2;
Hol akarod használni a dog2-t, ahová emlős kell? Sehol.
Csak ugatni akarsz vele:
dog2.bark()
Tehát ide kutya kell.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!