Makale Özeti

"VB.NET biliyorum C# da öğrenmek istiyorum." diyenler için bir makale dizisi.

Makale

VB.NET 'den C#'a - 9

NotInheritable

NotInheritable ifadesi ile bir sınıfın başka sınıflar tarafından temel sınıf olarak kullanılamayacağını, yani bu sınıfdan miras alınamayacağını belirleriz.

Public Class sekil

End Class

Public NotInheritable Class kare

    Inherits sekil

End Class

Aşağıdaki kod bloğu derleyici hatasına sebep olacaktır.

Public Class renklikare

    Inherits kare 'hata

End Class

C#'da NotOverridable ifadesi yerine sealed ifadesi kullanılır.

        public class sekil

        {}

        public sealed class kare:sekil

        {}

Aşağıdaki kod bloğu derleyici hatasına sebep olacaktır.

        public class renklikare:kare //hata

        {}

MustInherit

MustInherit ifadesi ile bir sınıfı soyut sınıf olarak nitelendiririz. Yani bu sınıfında amacı başka sınıflara temel sınıf olmaktır. Bu sınıfdan bir nesne türetilemez.

Public MustInherit Class sekil

End Class

Public Class kare

    Inherits sekil

End Class

Aşağıdaki kod bloğu derleyici hatasına sebep olacaktır.

Dim s As New sekil 'hata

C#'da MustInherit ifadesinin karşılığı abstract ifadesidir.

        public abstract class sekil

        {}

        public class kare:sekil

        {}

Aşağıdaki kod bloğu çalışma zamanı hatasına sebep olacaktır.

        sekil s=new sekil();

MustOverride

MustOverride ifadesi soyut sınıflar içerisinde kullanılan, metodları nitelendirmek için kullanılan bir ifadedir. Bu ifade ile nitelendirilmiş olan bir metod bu sınıfdan miras alan sınıflarda override edilmek zorundadır.

Public MustInherit Class sekil

    Public MustOverride Sub ciz(ByVal pnt As Point)

End Class

Public Class kare

    Inherits sekil

    Public Overrides Sub ciz(ByVal pnt As System.Drawing.Point)

        '...

    End Sub

End Class

MustOverride olarak tanımlanmış olan metodların gövdesi yoktur. Yani End Sub yada End Function yazmaya ve içerisine bir kod yazmaya izin verilmez. Sadece miras alacak sınıfa bildirmek için metod tanımlaması yapılır.

C#'da MustOverride ifadesinin karşılığı olarak abstract ifadesi kullanılır.

        public abstract class sekil

        {

            public abstract void ciz(Point pnt);

        }

        public class kare:sekil

        {

            public override void ciz(Point pnt)

            {}

        }

MustOverride (abstract) olarak Property tanımlamak

VB.NET

Public MustInherit Class sekil

    Public MustOverride Property genislik() As Integer

End Class

Public Class kare

    Inherits sekil

    Public Overrides Property genislik() As Integer

        Get

 

        End Get

        Set(ByVal Value As Integer)

 

        End Set

    End Property

End Class

C#

        public abstract class sekil

        {

            public abstract int genislik { get; set;}

        }

        public class kare:sekil

        {

            public override int genislik

            {

                get

                {

                    return 0;   

                }

                set

                {

                }

            }

        }

C# ile soyut olarak tanımlanacak property'nin readonly ve writeonly olma durumları soyut sınıfda tanımalama yaparken belirtilen get ve set ifadelerine bağlıdır. VB.NET'de ise bu ifade Readonly ve WriteOnly ifadelerini property tanımlama satırına ekleyerek belirlenir.

Cengiz HAN
Microsoft ASP.NET MVP
cengiz@cengizhan.com