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> |
<!--<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> |