PDA

View Full Version : آیا تغییرات در کلاس فرزند به کلاس پدر هم اعمال میشه؟



Developer Programmer
پنج شنبه 14 آذر 1387, 12:11 عصر
من دو تا کلاس به این صورت ساختم


Public MustInherit Class Shape
Enum eColor
white = 1
red
green
blue
End Enum
Private fColor As eColor
Public Property Color() As eColor
Get
Return (fColor)
End Get
Set(ByVal value As eColor)
fColor = value
End Set
End Property

Public Sub New()
fColor = eColor.white
End Sub

Public Sub New(ByVal myColor As eColor)
fColor = myColor
End Sub

Public MustOverride Function Space() As Byte
End Class

Public Class RectAngle : Inherits Shape
Private fTool As Byte
Private fArz As Byte
Public Property Tool() As Byte
Get
Return fTool
End Get
Set(ByVal value As Byte)
fTool = value
End Set
End Property

Public Property Arz() As Byte
Get
Return fArz
End Get
Set(ByVal value As Byte)
fArz = value
End Set
End Property

Public Sub New(ByVal myTool As Byte, ByVal myArz As Byte)
fTool = myTool
fArz = myArz
End Sub

Public Overrides Function Space() As Byte
Return (Tool * Arz)
End Function
End Class
حالا اگه پراپرتی Color رو در کلاس فرزند تغییر بدم، آیا رنگ کلاس پدر هم تغییر میکنه یا هر کدوم رنگ جداگانه ای دارن ؟


Imports Shape
Dim myRect As New RectAngle(3, 4)

Console.WriteLine("Tool:{0} Arz:{1} Color:{2} Space:{3}", myRect.Tool, myRect.Arz, myRect.Color, myRect.Space())

With myRect
.Arz = 5
.Tool = 6
.Color = Shape.Shape.eColor.green
End With

Console.WriteLine("Tool:{0} Arz:{1} Color:{2} Space:{3}", myRect.Tool, myRect.Arz, myRect.Color, myRect.Space())

End Sub
End Class
چطور میشه گفت که کلاس فرزند در فلان متد(مثل new) از کلاس پدر هم به ارث ببره؟

naeeme
پنج شنبه 14 آذر 1387, 16:30 عصر
شما می خواین color رو تغییر بدین و برای کلاس RectAngle هم این پراپرتی رو تعریف نکردین، پس این همون پراپرتی کلاس shape هست که داره مقدار میگیره.
اما اگر در کلاس RectAngle پراپرتی color رو تعریف می کردین، این دیگه بستگی به سیاست شما داشت که چه وضعیتی پیدا کنه. مثلا می تونستین توی کلاس RectAngle بگید که myBase.color=me.color.

Developer Programmer
پنج شنبه 14 آذر 1387, 19:51 عصر
شما می خواین color رو تغییر بدین و برای کلاس RectAngle هم این پراپرتی رو تعریف نکردین
اما خروجی برنامه که درسته


With myRect
.Arz = 5
.Tool = 6
.Color = Shape.Shape.eColor.green
End With

With myrect2
.Arz = 1
.Tool = 3
.Color = Shape.Shape.eColor.red
End With
Console.WriteLine("Tool:{0} Arz:{1} Color:{2} Space:{3}", myRect.Tool, myRect.Arz, myRect.Color, myRect.Space())
Console.WriteLine("Tool:{0} Arz:{1} Color:{2} Space:{3}", myrect2.Tool, myrect2.Arz, myrect2.Color, myrect2.Space())


کسی میدونه معادل دستور Inherited در دلفی ، توی VB.Net چیه ؟