23. november 2003 - 01:35Der er
4 kommentarer og 1 løsning
Inherit Class, men brug ny konstant.
Jeg har simplificeret min kode og har nu:
Class HeliumBallon Inherits Ballon Const GasArt As String = "Helium" End Class
Class BrintBallon Inherits Ballon Const GasArt As String = "Brint" End Class
Class Ballon Const GasArt As String = "Ingen gas"
Public Shared Function Gas() As String Return GasArt End Function End Class
Mit problem er så, at jeg gerne vil kalde Ballon.Gas og få "Ingen Gas", men samtidigt vil jeg også gerne kalde BrintBallon.Gas og få "Brint".. Men jeg ved bare ikke hvordan jeg skal gøre det.. Jeg vil helst undgå at skulle til at lave alt for meget om på min BrintBallon og HeliumBallon (da jeg i min originale kode bruger en del flere og mere komplekse classer). Det hele ville ikke volde mig så store problemer, hvis ikke min Ballon.Gas-funktion var shared, men det er den nu engang.
Hvad kan jeg skrive i stedet for mine Const-linier, så det virker ?
Fandt ud af at man ikke både kan override og share en funktion pga noget med noget v-table..
Men jeg fandt en vej uden om problemet.. Godt nok mere bøvlet.. Jeg lavede Ballon.Gas om til public og tilføjede en public shared i min BrintBallon, som så lavede en ny instance af BrintBallon, som så kaldte Gas.. Bøvlet, men det virker.
Public MustInherit Class Baloon Public MustOverride Function GetGas() As String End Class
Public Class HydrogenBaloon Inherits Baloon Public Overloads Overrides Function GetGas() As String Return "Hydrogen" End Function End Class
Public Class HeliumBaloon Inherits Baloon Public Overloads Overrides Function GetGas() As String Return "Helium" End Function End Class
Class MainClass Public Shared Sub Main(ByVal args As String()) Dim b1 As Baloon = New HydrogenBaloon Dim b2 As Baloon = New HeliumBaloon Console.WriteLine(b1.GetGas + " " + b2.GetGas) End Sub End Class
Functionen skal jo være shared.. Netop så man ikke skal til at oprette en ny ballon for at få fat i den funtion.. Det er nemlig det, der har været det store problem... Men fandt en lidt fusker måde at løse problemet.. Thx anyway.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.