Kezdőoldal » Számítástechnika » Programozás » Mi a külömbség ezek közt? C#

Mi a külömbség ezek közt? C#

Figyelt kérdés

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.


2014. jan. 18. 19:52
 1/10 anonim ***** válasza:

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.

2014. jan. 18. 20:10
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:

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?

2014. jan. 18. 22:56
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:

Jajj de buta vagyok így tényleg semmi különbség.

Így gondoltam:

B b = new B();

A b =new B();

2014. jan. 18. 23:33
 4/10 anonim ***** válasza:
Például heterogén kollekciót lehet vele csinálni.
2014. jan. 19. 00:13
Hasznos számodra ez a válasz?
 5/10 A kérdező kommentje:

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.

2014. jan. 19. 01:47
 6/10 anonim ***** válasza:

É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)

2014. jan. 19. 02:47
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

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.

2014. jan. 19. 04:12
 8/10 anonim ***** válasza:

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.

2014. jan. 19. 13:21
Hasznos számodra ez a válasz?
 9/10 A kérdező kommentje:

"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?

2014. jan. 19. 18:36
 10/10 anonim ***** válasza:

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.

2014. jan. 19. 19:26
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!