Abstract type: Difference between revisions
Content deleted Content added
No edit summary |
Added FreeBASIC |
||
Line 931: | Line 931: | ||
end interface |
end interface |
||
</lang> |
</lang> |
||
=={{header|FreeBASIC}}== |
|||
FreeBASIC does not currently support either abstract types or interfaces as such. |
|||
However, you can effectively create an abstract type by declaring all its methods to be abstract, so that they do not require a body in the declaring type itself. Such methods can then be overridden and implemented by its derived types. For example :- |
|||
<lang freebasic>' FB 1.05.0 Win64 |
|||
Type Animal Extends Object |
|||
Declare Abstract Sub MakeNoise() |
|||
End Type |
|||
Type Bear Extends Animal |
|||
name As String |
|||
Declare Constructor(name As String) |
|||
Declare Sub MakeNoise() |
|||
End Type |
|||
Constructor Bear(name As String) |
|||
This.name = name |
|||
End Constructor |
|||
Sub Bear.MakeNoise() |
|||
Print name; " is growling" |
|||
End Sub |
|||
Type Dog Extends Animal |
|||
name As String |
|||
Declare Constructor(name As String) |
|||
Declare Sub MakeNoise() |
|||
End Type |
|||
Constructor Dog(name As String) |
|||
This.name = name |
|||
End Constructor |
|||
Sub Dog.MakeNoise() |
|||
Print name; " is barking" |
|||
End Sub |
|||
Dim b As Animal Ptr = New Bear("Bruno") |
|||
b -> MakeNoise() |
|||
Dim d As Animal Ptr = New Dog("Rover") |
|||
d -> MakeNoise() |
|||
Delete b |
|||
Delete d |
|||
Print |
|||
Print "Press any key to quit program" |
|||
Sleep</lang> |
|||
{{out}} |
|||
<pre> |
|||
Bruno is growling |
|||
Rover is barking |
|||
</pre> |
|||
=={{header|F Sharp|F#}}== |
=={{header|F Sharp|F#}}== |