Was macht 'new' in einer Methodendeklaration?

NSR

Mitglied
Sers Leute,
es geht hierrum:
Code:
class ClassA {
  public void MyMethod() { 
    Console.WriteLine("MyMethod von ClassA");
  }
}
class ClassB : ClassA {
  public new void MyMethod() {
    Console.WriteLine("MyMethod von ClassB");
  }
}
Das habe ich beim Galileo Open Book 2005 unter Polymorphie gefunden (Link nicht möglich, da es dieses buch anscheinend nicht mehr im internet gibt).
Kurz gesagt geht es darum, welche Methode aufgerufen wird, -> wegen beide Methoden gleicher Name und Classe A basisclasse von classe B.
Die frage ist nun, was macht das 'new' in der Methode der classe B. Welchen sinn hat das?
Habe schon im Forum geschaut aber da gabs zu den Suchwörtern dutzende von Antworten (Suchw. = new in Methoden). Des würde zu lange dauern die alle durchzugehen.
Hab auch schon im geschäft gefragt un da weis auch keiner was des macht.
Wäre echt toll wenn da einer (oder mehrere) eine Antwort wüssten.
Danke schoneinmal dafür.
MFG Nico
 
Hallo,

damit kannst du Methoden ausblenden...

Schau mal hier:
http://www.akadia.com/services/dotnet_polymorphism.html

C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace De.Tutorials.Training
{
    class NewMethodKeyWordExample
    {
        static void Main(string[] args)
        {
            BaseService baseService = new BaseService();
            baseService.Operation();

            BaseService overrideService = new OverrideService();
            overrideService.Operation();

            BaseService newService = new NewService();
            newService.Operation();

            //Aber:
            NewService _newService = new NewService();
            _newService.Operation();
        }
    }

    class BaseService
    {
        public virtual void Operation()
        {
            Console.WriteLine("BaseService.Operation");
        }
    }

    class OverrideService : BaseService
    {
        public override void Operation()
        {
            Console.WriteLine("OverrideService.Operation");
        }
    }

    class NewService : BaseService
    {
        public new void Operation()
        {
            Console.WriteLine("NewService.Operation");
        }
    }
}

Ausgabe:
Code:
BaseService.Operation
OverrideService.Operation
BaseService.Operation
NewService.Operation

Gruß Tom
 
  • Gefällt mir
Reaktionen: NSR
Danke für die Antwort.
Kurioser weise haben wir genau das gestern in der Berufsschule behandelt.:eek:;)
Jetzt ergibt des einen noch größeren sinn.:D
Also danke nochmal.
Grüße Nico
 

Neue Beiträge

Zurück