Abstract type: Difference between revisions

Content deleted Content added
No edit summary
PureFox (talk | contribs)
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#}}==