Abstract type: Difference between revisions
Added Wren
m (PhixClass) |
(Added Wren) |
||
Line 3,065:
Sub Method_Must_Be_Implemented()
End Interface</lang>
=={{header|Wren}}==
Wren doesn't support interfaces but one can effectively create an abstract class by giving it methods but no constructor. Concrete classes can then inherit from the abstract class and either override, or simply inherit, its methods appropriately.
The Go example, when rewritten in Wren, looks like this.
<lang ecmascript>import "/fmt" for Fmt
class Beast{
kind {}
name {}
cry() {}
print() { System.print("%(name), who's a %(kind), cries: %(Fmt.q(cry())).") }
}
class Dog is Beast {
construct new(kind, name) {
_kind = kind
_name = name
}
kind { _kind }
name { _name }
cry() { "Woof" }
}
class Cat is Beast {
construct new(kind, name) {
_kind = kind
_name = name
}
kind { _kind }
name { _name }
cry() { "Meow" }
}
var d = Dog.new("labrador", "Max")
var c = Cat.new("siamese", "Sammy")
d.print()
c.print()</lang>
{{out}}
<pre>
Max, who's a labrador, cries: "Woof".
Sammy, who's a siamese, cries: "Meow".
</pre>
=={{header|zkl}}==
|