2011-01-28 11 views
0

この質問をどのようにするかわかりません...私の用語のいくつかは間違っているかもしれませんが、うまくいけば私はその質問を横切ることができます。私はこのVB.netの継承

Public Class Agency 
    public property ID as integer=0 
    public property Name as string=string.empty 
    Public sub new() 
    end sub 
end class 

のようなクラスの何かを持っているし、私は別のクラスを作成する場合は、リスト

Public Class Agency_Controller 
    Public Sub New() 
    end sub 

Public function Fetch() as list(of Agency) 
    pop the list and return it 
end function 
end class 

を返すファクトリクラスならばどのように私は、取得Agency_Miscを言うと庁クラスを継承させたいですそれを行う?私はAgency_Miscを使用したい場合は

Public Class Agency_Misc 
inherits Agency 
public property Address as string=string.empty 

エンドクラス

は今、どのように私はAgency_Controllerの機能を取得するのですか?私は代理店の後に行っていた場合、コードでは... I(庁)のリストとして 点心OSのようなものは=何も新しいAgency_Controller OS = oc.Fetch()

としてOCを暗くない が、私はしたい場合です私のリストは、(私がいくつかのものをやっていたので)Agency_Miscのリストを持っています 私はそれをどうすればいいですか?私はリストを(Agency_Miscの)リストに変更することはできません。

とにかく...私はそれが何か不足しているか、何を調べる必要があるかを学びたいと思います。

答えて

1

あなたが正しくあなたのクラスを定義している場合は、次の操作を行うことができます。

BaseClassの定義。 これらはまた、継承によって、BaseClassののオブジェクトであるため、(リストは、Dervivedクラスのオブジェクトを受け付けます(BaseClassのの)リストを定義し、DerivedClassのオブジェクトを移入BaseClassの

から継承DerivedClassを定義します。

アクセスタイプDerivedClassの変数を使用して、リスト内のアイテム。

あなたが行うことはできませんどのようなタイプのBaseClassののオブジェクトとリストを移入した後、型DerivedClassの変数を使用してそれらにアクセスしようとしている。

例1:これは動作します:

Public Class Form1 
Private MyListOfBaseCLass As List(Of MyBaseClass) 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    MyListOfBaseCLass = New List(Of MyBaseClass) 

    Dim dc As New MyDerivedCLass("City of Portland", "555 SW 5th Avenue") 
    MyListOfBaseCLass.Add(dc) 

    dc = New MyDerivedCLass("City of Salem", "222 E River Road") 
    MyListOfBaseCLass.Add(dc) 

    dc = New MyDerivedCLass("City of Denver", "333 SomeStreet") 
    MyListOfBaseCLass.Add(dc) 
End Sub 

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    For Each dc As MyDerivedCLass In MyListOfBaseCLass 
     MsgBox(dc.MyName & ", " & dc.MyAddress) 
    Next 
End Sub 
End Class 

これは失敗します。

Public Class Form1 
Private MyListOfBaseCLass As List(Of MyBaseClass) 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    MyListOfBaseCLass = New List(Of MyBaseClass) 

    Dim dc As New MyBaseClass("City of Portland") 
    MyListOfBaseCLass.Add(dc) 

    dc = New MyBaseClass("City of Salem") 
    MyListOfBaseCLass.Add(dc) 

    dc = New MyBaseClass("City of Denver") 
    MyListOfBaseCLass.Add(dc) 
End Sub 

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    For Each dc As MyDerivedCLass In MyListOfBaseCLass 
     MsgBox(dc.MyName & ", " & dc.MyAddress) 
    Next 
End Sub 
End Class 
+0

をOK ..助けに感謝を – jvcoach23

0

あなたが最良のコンストラクタ

Public Class Agency 

    Private m_ID As Integer 
    Public Property ID() As Integer 
     Get 
      Return m_ID 
     End Get 
     Set(ByVal value As Integer) 
      m_ID = value 
     End Set 
    End Property 


    Private m_name As String 
    Public Property Name() As String 
     Get 
      Return m_name 
     End Get 
     Set(ByVal value As String) 
      m_name = value 
     End Set 
    End Property 

    Sub New(ByVal id As Integer, ByVal name As String) 
     Me.m_ID = id 
     Me.m_name = name 
    End Sub 

End Class 

でプロパティを設定...

Dim HiDollar as New Agency(100, "High Dollar")