Abstract type: Difference between revisions
m
→{{header|Phix}}: added syntax colouring the hard way
m (→{{header|Phix}}: added syntax colouring the hard way) |
|||
Line 2,391:
You can also have explicitly abstract classes (and/or abstract methods). Needs 0.8.1+
<!--<lang Phix>
<span style="color: #008080;">abstract</span> <span style="color: #008080;">class</span> <span style="color: #000000;">job</span>
<span style="color: #004080;">integer</span> <span style="color: #000000;">id</span>
<span style="color: #000080;font-style:italic;">-- procedure test(); -- (the ; makes it an abstract method)</span>
<span style="color: #008080;">procedure</span> <span style="color: #000000;">show</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"this is job:%d\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">id</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
<span style="color: #000080;font-style:italic;">--job j = new({1}) -- compilation error: "abstract class"</span>
<span style="color: #008080;">class</span> <span style="color: #000000;">errand</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">job</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
<span style="color: #000000;">errand</span> <span style="color: #000000;">e</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">new</span><span style="color: #0000FF;">({</span><span style="color: #000000;">2</span><span style="color: #0000FF;">})</span>
<span style="color: #000000;">e</span><span style="color: #0000FF;">.</span><span style="color: #000000;">show</span><span style="color: #0000FF;">()</span>
<!--</lang>-->
{{out}}
<pre>
|