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}}==
9,479

edits