Entwickler-Ecke

C# - Die Sprache - Warnung methode ... blendet den vererbten Member


Erwin Z - Do 16.10.08 16:53
Titel: Warnung methode ... blendet den vererbten Member
Hallo,

bin absoluter Anfaenger und probiere gerade in C# zu ueben .

Kann mir jemand helfen, warum diese Warnung kommt:

Warnung 3 "ConsoleApplicationFactoryMuster.MuenchenerTomatenPizza.schneiden()" blendet den vererbten Member "ConsoleApplicationFactoryMuster.Pizza.schneiden()" aus. Verwenden Sie das new-Schlüsselwort, wenn das Ausblenden vorgesehen war. C:\Users\edderze\Documents\Visual Studio 2008\Projects\ConsoleApplicationFactoryMuster\ConsoleApplicationFactoryMuster\Program.cs 97 22 ConsoleApplicationFactoryMuster

Hier ist das programmteil:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
   public abstract class Pizza {
        public String name;
        public String teig;
        public String sosse;
        //List<string> belaege = new List<string>();
        public String[] belaege = new String [5];
        public void vorbereiten () {
            Console.WriteLine ("Bereite " + name);
            Console.WriteLine ("Werfe Teig ... ");
            Console.WriteLine ("Fuege Sosse hinzu ... ");
            Console.WriteLine ("Fuege Belaege hinzu ...");
            for (int i = 0; i < 5; i++) {
                Console.WriteLine (" " + belaege[i]);
            }
            Console.ReadLine();
        }
        public void backen () {
            Console.WriteLine (" Backe 25 Minuten bei 350 Grad");
        }
        public virtual void schneiden() {
            Console.WriteLine ("Schneide die Pizza diagonal in Stuecke");
        }
        public void verpacken () {
            Console.WriteLine ("PAcke die Pizza in die officielle Pizzeria-Schachtel");
        }
        public String getName () {
            return name;
        }
    }
    
   public class MuenchenerTomatenPizza : Pizza {
            public MuenchenerTomatenPizza () {
                name = "Tomatenpizza Muenchener Art";
                teig = "Teig mit extra dicker Kruste";
                sosse = "Holonesesosse";

                belaege [0] = "Mozzarella";
                belaege [1] = "Tomate gehackt";
            }
// hier ist die methode auf die sich die warnung bezieht
            override void schneiden() {
                Console.WriteLine("Schneide die Pizza in Rechecke");
            }
        }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Christian S. - Do 16.10.08 16:59

Hallo und :welcome:!

Ich denke, das liegt daran, dass die schneide-Methode in der abgeleiteten Klasse eine andere Sichtbarkeit als die in der Mutterklasse hat. Daher führst Du da im Prinzip eine neue Methode mit demselben Namen wie die alte Methode ein, welche damit verborgen wird.

Grüße
Christian


Erwin Z - Do 16.10.08 17:15

"DANKE fuer "WELCOME"

eigentlich die methode ist als virtual deklariert in der mutterklasse und dann mit override in der kindklasse ueberschrieben, sollte laut C# - buch richtig sein,
hmmm...


Christian S. - Do 16.10.08 17:17

Sie ist als public virtual deklariert, die Methode in der abgeleiteten Klasse aber nicht als public!


Erwin Z - Do 16.10.08 17:29

jetzt ist die warnung weg :)

VIELEN DANK!

wie fuegt man eigentlich C#-Tags?


Christian S. - Do 16.10.08 17:31

user profile iconErwin Z hat folgendes geschrieben Zum zitierten Posting springen:
wie fuegt man eigentlich C#-Tags?

Im Editor im Abschnitt "Bereiche" kannste Du die entsprechenden Kontrollen verwenden. Oder Du machst es manuell: http://www.c-sharp-forum.de/help_schreiben_bbcodes_source.html&sub=,19,27,32


Erwin Z - Do 16.10.08 18:02


C#-Quelltext
1:
2:
Vielen Dank!!!
+ schoenen Abend noch...!