2015-08-28 1 views
1

Как вызвать базовые функции в vb.net?Call Base функции от ребенка в VB.net

Imports System.Data.Sql 
Imports System.Data.SqlClient 

Public Class Box 
    Public length As Double ' Length of a box 
    Public breadth As Double ' Breadth of a box 
    Public height As Double ' Height of a box 
    Public function setLength(ByVal len As Double) 
     length = len 
    End Sub 
    Public Sub setBreadth(ByVal bre As Double) 
     breadth = bre 
    End Sub 
    Public Sub setHeight(ByVal hei As Double) 
     height = hei 
    End Sub 
    Public Function getVolume() As Double 
     Return length * breadth * height 
    End Function 
End Class 

Это говорит о синтаксической ошибке, когда я использую MyBase назвать базовые функции

Public Class myChild : Inherits Box 
    'box 1 specification 
    MyBase.setLength(6.0) 
    MyBase.setBreadth(7.0) 
    MyBase.setHeight(5.0) 

    'box 2 specification 
    MyBase.setLength(12.0) 
    MyBase.setBreadth(13.0) 
    MyBase.setHeight(10.0) 

    'volume of box 1 
    volume = MyBase.getVolume() 
    Console.WriteLine("Volume of Box1 : {0}", volume) 

    'volume of box 2 
    volume = MyBase.getVolume() 
End Class 

ответ

1

Вы не можете позвонить MyBase оттуда как объект еще не был построен.

Лучше реализация будет:

Box.vb

Public Class Box 
    Private mLength As Double ' Length of a box 
    Private mBreadth As Double ' Breadth of a box 
    Private mHeight As Double ' Height of a box 

    Public Sub New(ByVal length As Double, ByVal breadth As Double, ByVal height As Double) 
     Me.mLength = length 
     Me.mBreadth = breadth 
     Me.mHeight = height 

    End Sub 
    Public Property Length As Double 
     Get 
      Return Me.mLength 
     End Get 
     Set(ByVal value As Double) 
      Me.mLength = value 
     End Set 
    End Property 

Public Property Breadth As Double 
    Get 
     Return Me.mBreadth 
    End Get 
    Set(ByVal value As Double) 
     Me.mBreadth = value 
    End Set 
End Property 

Public Property Height As Double 
    Get 
     Return Me.mHeight 
    End Get 
    Set(ByVal value As Double) 
     Me.mHeight = value 
    End Set 
End Property 

Public Function getVolume() As Double 
    Return Length * Breadth * Height 
End Function 
End Class 

Child.vb

Public Class Child : Inherits Box 

    Public Sub New(ByVal length As Double, ByVal breadth As Double, ByVal height As Double) 
     MyBase.New(length, breadth, height) 
    End Sub 

End Class 

Пример

Sub Main() 
     Dim box1 As New Child(6.0, 7.0, 5.0) 
     Dim box2 As New Child(12.0, 13.0, 10.0) 

     Console.WriteLine("box1 volume is: {0}", box1.getVolume()) 
     Console.WriteLine("box2 volume is: {0}", box2.getVolume()) 
    End Sub 
+0

Thanks Bos! Это действительно решило мои проблемы. – Jesign

+0

Хммм. поэтому в vb.net нет необходимости использовать функцию include/require для использования другого файла? точно так же, как php, используя функцию include/require. – Jesign

+0

@ J.Ignacio Если все файлы находятся под одним и тем же пространством имен, вам не нужно явно импортировать файл. Мой VB.NET очень колючий, но я думаю, вам нужно будет импортировать, если файл находится в другом пространстве имен, хотя VB очень прощает большинство вещей. – TEK