Abstract type: Difference between revisions

Content added Content deleted
m (→‎{{header|Phix}}: added syntax colouring the hard way)
Line 2,391: Line 2,391:


You can also have explicitly abstract classes (and/or abstract methods). Needs 0.8.1+
You can also have explicitly abstract classes (and/or abstract methods). Needs 0.8.1+
<lang Phix>abstract class job
<!--<lang Phix>-->
<span style="color: #008080;">abstract</span> <span style="color: #008080;">class</span> <span style="color: #000000;">job</span>
integer id
<span style="color: #004080;">integer</span> <span style="color: #000000;">id</span>
-- procedure test(); -- (the ; makes it an abstract method)
<span style="color: #000080;font-style:italic;">-- procedure test(); -- (the ; makes it an abstract method)</span>
procedure show()
<span style="color: #008080;">procedure</span> <span style="color: #000000;">show</span><span style="color: #0000FF;">()</span>
printf(1,"this is job:%d\n",id)
<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>
end procedure
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
end class
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
--job j = new({1}) -- compilation error: "abstract class"
<span style="color: #000080;font-style:italic;">--job j = new({1}) -- compilation error: "abstract class"</span>

class errand extends job
<span style="color: #008080;">class</span> <span style="color: #000000;">errand</span> <span style="color: #008080;">extends</span> <span style="color: #000000;">job</span>
end class
<span style="color: #008080;">end</span> <span style="color: #008080;">class</span>
errand e = new({2})
<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>
e.show()</lang>
<span style="color: #000000;">e</span><span style="color: #0000FF;">.</span><span style="color: #000000;">show</span><span style="color: #0000FF;">()</span>
<!--</lang>-->
{{out}}
{{out}}
<pre>
<pre>