Metot Saklama (Method Hiding)

MethodHiding
Kalıtım ile başka sınıfa geçmiş bir metot, yeni sınıfta “new” eklenerek tekrar yazılırsa base class’taki metot saklanır. Bu saklama, metodu değiştirmek için kullanılabilir.

Diyelim ki, bazı şirket isimlerini giriyoruz ve bu şirketlerin bulundukları sektörleri metot saklama aracılığıyla göstereceğiz. Genel bir “Sirket” sınıfı olacak ve sektör sınıfları bu sınıfı kalıtım ederek “SirketAdi”, “SirketKurucusu” bilgilerini alacak. Program sınıfında ise hangi sektörde şirket yazacaksak o sektörü içeren sınıfın object’ini yaratacağız. Şirketin adını, Şirketin Kurucusunu gireceğiz ve bu bilgileri ile birlikte şirketin bulunduğu sektörü yazan, her sektör sınıfında method hiding ile değiştirilmiş Info() metodunu göstereceğiz

Bu örneğin kodu şu şekilde gösterilebilir;

using System;

class Sirket
{
    public string SirketAd;
    public string SirketKurucusu;

    public void Info()
    {
        Console.WriteLine(SirketAd + " " + SirketKurucusu);
    }
}

class Enerji : Sirket
{
    public new void Info()
    {
        Console.WriteLine(" >> Enerji Sektörü \nŞirket Adı:" + SirketAd + "\nŞirket Kurucusu: " + SirketKurucusu);
    }
}
class Alisveris : Sirket
{
    public new void Info()
    {
        Console.WriteLine(" >> Alışveriş Sektörü \nŞirket Adı:" + SirketAd + "\nŞirket Kurucusu: " + SirketKurucusu);
    }
}

class Teknoloji : Sirket
{
    public new void Info()
    {
        Console.WriteLine(" >> Teknoloji Sektörü \nŞirket Adı:" + SirketAd + "\nŞirket Kurucusu: " + SirketKurucusu);
    }
}

class Program
{
    static void Main()
    {
        Teknoloji T = new Teknoloji();
        T.SirketAd = "Microsoft";
        T.SirketKurucusu = "Bill Gates";
        T.Info();

        Console.WriteLine();

        Alisveris A = new Alisveris();
        A.SirketAd = "Walmart";
        A.SirketKurucusu = "Sam Walton";
        A.Info();

        Console.WriteLine();

        Enerji E = new Enerji();
        E.SirketAd = "Total";
        E.SirketKurucusu = "Ernest Mercier";
        E.Info();

        Console.WriteLine();
    }
}

Leave a comment