title: Hiding function on nested class
body: <pre><code>Public Class Class1
  
  Private names As List(Of String)
  Private _class2 As New Class2
  
  Public Sub AddName(ByVal name As String)
      names.Add(name)
      _class2.Add()
  End Sub
  
  Public ReadOnly Property AddAge(ByVal name As String) As Class2
      Get
          _class2.index = names.IndexOf(name)
          Return _class2
      End Get
  End Property
  
  Public Sub Clear()
      names.Clear()
      _class2.Clear()
  End Sub
  
  Public Class Class2
  
      Private _age As List(Of Integer)
      Protected Friend index As Integer
  
      Public Property Age() As Integer
          Get
              Return _age(index)
          End Get
          Set(ByVal value As Integer)
              _age(index) = value
          End Set
      End Property
  
      Public Sub Add()
          _age.Add(0)
      End Sub
  
      Public Sub Clear()
          _age.Clear()
      End Sub
  
  End Class
  End Class
  </code></pre>
  
  <p>How can I hide ,Sub Clear and Sub Add on class2, so they'll only be visible on class1, like;</p>
  
  <pre><code>Public Sub Clear()
      names.Clear()
      _class2.Clear() '&lt;&lt;&lt;&lt;&lt;&lt;&lt;
  End Sub
  </code></pre>
  
  <p>I want they do not be visible on Sub Main(), like they are below.</p>
  
  <pre><code>Sub Main()
      Dim person As New Class1
  
      person.AddAge("kid").Clear() '&lt;&lt;&lt;&lt;&lt;&lt;
      person.AddAge("kid").Add() '&lt;&lt;&lt;&lt;&lt;&lt;
  
  End Sub
  </code></pre>
  
  <p>If I put Protected, I class1 cannot access it. If I put Protected Friend, Sub Main() can still access them. Thanks for your help and time. </p>