Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Newbie class inheritance question

Reply
Thread Tools

Newbie class inheritance question

 
 
Jon
Guest
Posts: n/a
 
      08-06-2003
I'm running into a simple issue when instatiating a derived class that
calls a custom constructor. Here's the type of code found in the
parent class:

Public Class parent
Private _a As Long
Private _b As Long
Private _c As String
.....

Public Sub New(ByVal a As Long, ByVal b As Long, ByRef c As
String)
_a = a
_b = b
_c = c
EndSub
EndClass

And now the derived class:

Public Class child
Inherits parent

' apparently, i have to redeclare the private vars found in the
parent???
Private _a As Long
Private _b As Long
Private _c As String
.....
' cannot inherit the constructor, so define identical one here
Public Sub New(ByVal a As Long, ByVal b As Long, ByRef c As
String)
' call mybase.new to assign vars
MyBase.New(a, b, c)
EndSub
EndClass

By calling 'mybase.new' in the child class, I had expected the var
assignments in the parent to be executed, populating the vars declared
in the child.
What I found with the above class definitions is that the child 'var
_c' is NOT assigned a value.

I'm sure there's a simple answer, but I'm a beginner. Also, I found
some MSDN articles on class inheritance in the 'Upgrading to .NET'
section, but am looking for something that goes deeper. Any idea
where I can find articles that go into greater depth on the subject of
class inheritance?

Thanks... Jon
 
Reply With Quote
 
 
 
 
John Saunders
Guest
Posts: n/a
 
      08-06-2003
Jon, "Private" means "Private". Not even a child class can see private
members. You would need to declare them as protected in the parent in order
for the child to use them.

And as a general rule, you should avoid having derived classes access fields
in the parent class. Let them stay private, but declare protected properties
to access them:

Protected Property A as Long
Get
Return _a
End Get
Set
_a = Value
End Set
End Property

This way, the parent class is in control of when these fields are set, and
the values to which it may be set. For instance, you can put code in the Set
accessor to validate the value, or even put code in the Get accessor to get
the value from somewhere else. If you allow your child classes to access the
fields directly, then the fields will _always_ have to be there, just the
way they are, or you'll break the derived classes.
--
John Saunders
Internet Engineer
http://www.velocityreviews.com/forums/(E-Mail Removed)

"Jon" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) om...
> I'm running into a simple issue when instatiating a derived class that
> calls a custom constructor. Here's the type of code found in the
> parent class:
>
> Public Class parent
> Private _a As Long
> Private _b As Long
> Private _c As String
> ....
>
> Public Sub New(ByVal a As Long, ByVal b As Long, ByRef c As
> String)
> _a = a
> _b = b
> _c = c
> EndSub
> EndClass
>
> And now the derived class:
>
> Public Class child
> Inherits parent
>
> ' apparently, i have to redeclare the private vars found in the
> parent???
> Private _a As Long
> Private _b As Long
> Private _c As String
> ....
> ' cannot inherit the constructor, so define identical one here
> Public Sub New(ByVal a As Long, ByVal b As Long, ByRef c As
> String)
> ' call mybase.new to assign vars
> MyBase.New(a, b, c)
> EndSub
> EndClass
>
> By calling 'mybase.new' in the child class, I had expected the var
> assignments in the parent to be executed, populating the vars declared
> in the child.
> What I found with the above class definitions is that the child 'var
> _c' is NOT assigned a value.
>
> I'm sure there's a simple answer, but I'm a beginner. Also, I found
> some MSDN articles on class inheritance in the 'Upgrading to .NET'
> section, but am looking for something that goes deeper. Any idea
> where I can find articles that go into greater depth on the subject of
> class inheritance?
>
> Thanks... Jon



 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
I am a newbie for python and try to understand class Inheritance. aaabbb16@hotmail.com Python 5 10-15-2011 09:31 PM
C++ Struct inheritance against class inheritance johnsonlau C++ 1 07-21-2008 04:58 PM
Class Inheritance - newbie Question Al C++ 2 04-18-2006 05:13 AM
Nested Class, Member Class, Inner Class, Local Class, Anonymous Class E11 Java 1 10-12-2005 03:34 PM
Private access modifier and Inheritance (Inheritance implementation in Java) maxw_cc Java 1 12-21-2003 11:38 AM



Advertisments