Jump to content

Abstract type: Difference between revisions

Add Skew
(Add Skew)
Line 3,173:
END TEXTHASHKEY;
</syntaxhighlight>
=={{header|Skew}}==
{{works with|skewc|0.9.19}}
 
In Skew, interfaces must be explicitly implemented with `::`.
 
<syntaxhighlight lang="skew">
@entry
def main {
var rgb = Rgb.new(0, 255, 255)
var hex = Hex.new("00ffff")
 
var color Color
color = hex
color.print
 
color = rgb
color.print
 
(hex as Color).print
}
 
interface Color {
def toString string
def print {
dynamic.console.log(self.toString)
}
}
 
class Rgb :: Color {
var r int, g int, b int
def toString string { return "rgb(\(r), \(g), \(b))" }
}
 
class Hex :: Color {
var code string
def toString string { return "#\(code)" }
}
</syntaxhighlight>
 
 
=={{header|Smalltalk}}==
A class is declared abtract by responding to the query <tt>isAbstract</tt> with true, and defining the required protocol for subclasses to raise an error notification. Optionally, instance creation can be blocked (but seldom done, as you will hit a subclassResponsibility anyway soon). Typically, the IDE provides menu functions to generate these definitions automatically (eg. "Insert Abstract Class" in the refactoring submenu of the class browser):
89

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.