Visual Basicにて継承の勉強をしています。
class1 から class2 への継承はできましたが、
オーバーライドがうまくいきません。
Function GetAge() As Integer の前に Overrides を指定すると
基底クラスで function をオーバーライドしないため、function 'GetAge' を 'Overrides' として宣言することはできません。
とエラーがでます。
どこがいけないでしょうか?
以下がソースコードになります。
class1.vb
VB
1Public Class Class1 2 Public Property Name As String 3 Public Property 誕生日 As Date 4 5 Public Sub New(ByVal name As String, ByVal 誕生日 As Date) 6 Me.Name = name 7 Me.誕生日 = 誕生日 8 End Sub 9 10 Public Overrides Function GetAge() As Integer 'ここにOverridesを入れるとエラーがでる 11 Dim age As Integer = Today.Year - Me.誕生日.Year 12 If Today.Month < Me.誕生日.Month OrElse 13 Today.Month = Me.誕生日.Month AndAlso 14 Today.Day < Me.誕生日.Day Then 15 age = age - 1 16 End If 17 18 Return age 19 End Function 20End Class 21
class2.vb
VB
1Public Class Class2 2 Inherits Class1 3 4 Public Property Address As String 5 6 Public Sub New(name As String, 7 誕生日 As Date, 8 address As String) 9 MyBase.New(name, 誕生日) 10 Me.Address = address 11 End Sub 12 13 Public Overrides Function GetAge() As Integer 14 MessageBox.Show("計算します。") 15 Return MyBase.GetAge() 16 End Function 17End Class 18 19
フォーム
VB
1Public Class Form1 2 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 3 Dim person As New Class2(TextBox1.Text, DateTimePicker1.Value.Date, TextBox2.Text) 4 5 MessageBox.Show(person.Name & "さんの年齢は" & CStr(person.GetAge()) & "歳です。" & 6 vbCrLf & "住所は" & person.Address) 7 End Sub 8End Class 9
[環境]
Visual Studio 2019 Commnity
言語 Visual Basic
テンプレート Windowsフォームアプリケーション(.NET Framework)
OS Windows 10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。