2017-07-14 11 views
0

私はここで何が間違っているのか理解するのに少し問題があります。親クラスから継承した子クラスの関数は、その変数を使用していますか?

私はこれを行う場合は、この1

Public Class Parent 
    Public name As String = "dad" 


    Public Function sayname() As String 
     Return name 
    End Function 
End Class 

Public Class child 
    Inherits Parent 
    Shadows name As String = "son" 
End Class 

にコード似を持っている:

dim littleson as new child 
littleson.sayname() 

を、それは「お父さん」を返しますが、私はそれが「息子」を返すようにしたいです。私は何が問題なの?

+0

'parent'のすべての新しいインスタンスは、明示的に名前を設定しています:' johnstruc.name = name' Parent.Nameはパパであるため、すべてパパです。 – Plutonix

+0

構造を使用しないでください。あなたが作ったものは意味をなさない。子供は親から継承するべきではありません。おそらく、PersonやHumanという基本クラスが継承するより論理的な意味を持つでしょう。 – LarsTech

+0

しかし、私は "親"を宣言したことはありませんか?私が読んだこと、または少なくとも私がそれから理解したことから判断すると、「影」は「子供」のインスタンスの属性「名前」を変更することになっていました。そして、私は親を宣言しなかったので、まだ失われています。 – SimonLearner

答えて

1

シャドウしないでください。コンストラクタの値を設定するだけです。

Public Class Child 
    Inherits Parent 

    Public Sub New() 
     MyBase.New() 
     name = "son" 
    End Sub 

End Class 

シャドーは、親変数とはまったく異なる新しい変数を作成します。

+0

は、私が書いたものを忘れて、 :-D ありがとう、それはとても明白であり、それでも私はそれを見ない2時間を過ごした。 – SimonLearner

関連する問題