谁能告诉我老师这个题的意图在哪里?
vb.net吧
全部回复
仅看楼主
level 3
段心凡 楼主
题目:创建一个PET接口,有一个name属性,一个只读的Age属性,还有一个Say方法创建Cat和Dog类,扩展自PET接口,并实现其中的属性和方法。Say方法的实现内容:
Console.WriteLine(Name & ":My name is" & Name & ",Age is" & Age & ".")
创建PersianCat和PersianDog分别继承Cat和Dog,分别执行Say方法。
题目是很简单,但是我有点不明白的是,Age属性是只读的,所以执行Say时都是打印Age is 0,这样感觉这个属性不是没用了吗?设置默认值也讲不通啊,你家的狗猫都是一样大?难道老师的考察点就是为了考察我们是否会设置只读属性?
老师给我们vb.net的资料和例子代码,让我们自学,每天完成作业就行,我刚自学不到4天,原来学java方向的,所以编程不是0基础。弱弱的问:vb.net里有什么方法能在构造对象实例时给属性设置一个值,之后只读不能修改?有没有什么方法是能自动修改属性值,如年龄属性,能逐年自动+1的?
问题也许很弱智,还请见谅。
2012年01月02日 17点01分 1
level 3
段心凡 楼主
这是我写的代码:Module Module1
Public Interface PET
Property Name As String
ReadOnly Property Age As Integer
Sub Say()
End Interface
Public Class Dog
Implements PET
Private _name As String
Private _age As Integer = 1
Sub New()
End Sub
Sub New(ByVal name As String)
Me.Name = name
End Sub
Public ReadOnly Property Age As Integer Implements PET.Age
Get
Return _age
End Get
End Property
Public Property Name As String Implements PET.Name
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub Say() Implements PET.Say
Console.WriteLine(Name & ":My name is " & Name & ",Age is " & Age & ".")
End Sub
End Class
Public Class Cat
Implements PET
Private _name As String
Private _age As Integer = 1
Sub New()
End Sub
Sub New(ByVal name As String)
Me.Name = name
End Sub
Public ReadOnly Property Age As Integer Implements PET.Age
Get
Return _age
End Get
End Property
Public Property Name As String Implements PET.Name
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Public Sub Say() Implements PET.Say
Console.WriteLine(Name & ":My name is " & Name & ",Age is " & Age & ".")
End Sub
End Class
Public Class PersianCat
Inherits Cat
Sub New()
MyBase.New()
End Sub
Sub New(ByVal name As String)
MyBase.New(name)
End Sub
End Class
Public Class PersianDog
Inherits Dog
Sub New()
MyBase.New()
End Sub
Sub New(ByVal name As String)
MyBase.New(name)
End Sub
End Class
Sub Main()
Dim pc As New PersianCat
Dim pd As New PersianDog
pc = New PersianCat("小猫")
pd = New PersianDog("小狗")
pc.Say()
pd.Say()
Console.ReadLine()
End Sub
End Module
请看看有什么不足或者需要修改的地方吗?
2012年01月03日 02点01分 2
level 6
你忘了有构造函数这个东西了么?而且我看你用了构造函数了,怎么没把Age从构造函数里传进去呢?
2012年01月04日 01点01分 3
level 3
段心凡 楼主
ReadOnly
2012年01月07日 18点01分 4
level 5
[打酱油]
2012年01月13日 03点01分 5
level 6
ReadOnly的是你的属性,但是属性中你Return的是一个内部变量。这个内部变量,确实是可以在类内部修改的,初始值就在构造函数里传入就好。
2012年03月08日 04点03分 6
1