SORU
25 Ocak 2013, Cuma


C# Soyut sınıf için Arayüz Kalıtım

Eğer aşağıda tanımlanan bir Arayüzü var olmadığını varsayalım:

public interface IFunctionality
{
    void Method();       
}

ve ben aşağıda gösterildiği gibi soyut bir sınıf için bu arabirimi uygulayın:

public abstract class AbstractFunctionality: IFunctionality
{
    public void Method()
    {
        Console.WriteLine("Abstract stuff"   "\n");
    }       
}

yine aşağıdaki gibi soyut sınıftan Miras olan somut bir Dersim var:

public class ConcreteFunctionality: AbstractFunctionality
{
    public void Method()
    {
        Console.WriteLine("Concrete stuff"   "\n");
    }
}

Şimdi aşağıdaki kodu var

ConcreteFunctionality mostDerived = new ConcreteFunctionality();
AbstractFunctionality baseInst = mostDerived;
IFunctionality interfaceInst = mostDerived;
mostDerived.Method();
baseInst.Method();
interfaceInst.Method();

Bu şeyler idamından sonra alıyorum çıktı aşağıdaki gibidir.

Concrete stuff
Abstract stuff
Abstract stuff

Ama ne ben bekliyordum çıktı "Somut Şeyler" tüm bu üç kasa olarak ne yapıyorum burada atama başvuru ConcreteFunctionality değişken tipi AbstractFunctionality IFunctionality.

DAHİLİ olarak ne oluyor. Lütfen netleştirin.

CEVAP
25 Ocak 2013, Cuma


Burada:

public class ConreteFunctionality:AbstractFunctionality
{
    public void Method()
    {
        Console.WriteLine("Concrete stuff"   "\n");
    }
}

... ağır basan sen değilsinmevcutyöntem. Bir yaratıyorsunyenihangi yöntemgizlervarolan bir. (Eğer gerçekten bu davranışı istiyorsanız bir uyarı da, new değiştirici kullanımı öne almalısınız.) Arabirim arabirim eşleme tablosu o sınıfta yöntemine başvuruyor AbstractFunctionality, uygulanmıştır.

Şimdi Eğeryeniden gerçeklemekarayüz:

public class ConcreteFunctionality : AbstractFunctionality, IFunctionality

... sonra arabirim eşleme ConcreteFunctionality yöntemi bakın ve çağrı yoluyla beklediğiniz davranışları alacaksınarayüzühala uygulama almak istiyorum ama (üçüncü çağrı gibi) ** 20 ikinci çağrı için.

Ve daha genel olarak temiz akıl sağlığını koruma AbstractFunctionality yöntem sanal yapmak, ConcreteFunctionality geçersiz olur. Bu şekilde her durumda ConcreteFunctionality uygulama kullanır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AndyMcMillinTV

    AndyMcMillin

    6 HAZİRAN 2007
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006