2011-10-14 9 views
0

からクラスにアクセスするには:は、どのように私は2つのクラスを持って継承されたクラス

class class2 
inherits class1 

public sub modify() 

'modify property of class1 

end sub 

end class 

どのように私はクラス2でサブでのClass1を変更することができますか?

+0

はクラス2 – Delcon

+0

はい内からクラス1を指すように右のキーワードですが、あなたは 'Protected'や' Public'としてあなたの財産を宣言した場合、あなたも使用する必要はありません。 'Class2'が継承しているので、' Class2'で実際に宣言されたようなものです。 – Smur

+1

クラス2のModifyメソッドで何をしたいかを知るためにクラス1の定義を含めると役に立ちます。 –

答えて

1

あなたはちょうどそれを呼び出します。例:

Public Class class1 
    Private _Value As String = String.Empty 

    Property Value() As String 
    Get 
     Return _Value 
    End Get 
    Set(ByVal value As String) 
     _Value = value 
    End Set 
    End Property 

End Class 

Public Class class2 
    Inherits class1 

    Public Sub modify() 
    Value = "modified" 
    End Sub 

End Class 

そして、それは動作します表示する:デフォルトのコンストラクタなしで基本クラスを持っているか、したい場所私は、基本クラスの情報へのアクセスに関する上記のコメントに追加したい

Dim c2 As New class2 
c2.modify() 
MessageBox.Show(c2.Value) 
+0

クール、今働いています。私がやっていたことが、私にこれらの問題をもたらしたという手掛かりはありません。ダンクス! – Delcon

0

プロパティについて質問していますが、継承クラスにはprotectedpublicのプロパティしか表示されません。 親クラスの既存の関数をオーバーライドする場合は、MyBaseキーワードが必要です。他のprotectedまたはpublicプロパティまたは関数は特別なキーワードなしで規則的にアクセスできます。

+0

mybaseはエラーを返します。 – Delcon

+0

エラーmybaseはinstancemethod内でのみ使用できます。 – Delcon

+0

PublicおよびProtectedプロパティにMyBaseを使用する必要はありません。クラス2で宣言されているようにアクセスしてください。 – MichaelS

0

一つの先端があります特定のコンストラクタを使用するこれはMybaseを使用する良い機会です。このシナリオで追加のアクションが発生する前に、コンストラクターを呼び出す必要があります。

私が行方不明です何

Public Class MyClass 
    Inherits baseClass 
    Public Sub New() 
    mybase.new("Oranges") 
    End Sub 
End Class 

Public Class baseClass 
Private _someVariable as String 
Public Sub New(byval passedString as string) 
    _someVariable = passedString 
End Sub 
End Class 

関連する問題