Abstract type: Difference between revisions

Added FreeBASIC
No edit summary
(Added FreeBASIC)
Line 931:
end interface
</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#}}==
9,490

edits