Polymorphism: Difference between revisions

Content added Content deleted
(added ceylon)
Line 729: Line 729:
}
}
}</lang>
}</lang>

=={{header|Ceylon}}==
<lang ceylon>import ceylon.language {
consolePrint = print
}

shared void run() {

class Point {

shared variable Integer x;
shared variable Integer y;

shared new(Integer x = 0, Integer y = 0) {
this.x = x;
this.y = y;
}

shared new copy(Point p) {
this.x = p.x;
this.y = p.y;
}

shared default void print() {
consolePrint("[Point ``x`` ``y``]");
}
}

class Circle extends Point {

shared variable Integer r;

shared new(Integer x = 0, Integer y = 0, Integer r = 0) extends Point(x, y) {
this.r = r;
}

shared new copy(Circle c) extends Point.copy(c){
this.r = c.r;
}

shared actual void print() {
consolePrint("[Circle ``x`` ``y`` ``r``]");
}
}

value shapes = [
Point(), Point(1), Point(1, 2), Point {y = 3;}, Point.copy(Point(4, 5)),
Circle(), Circle(1), Circle(2, 3), Circle(4, 5, 6), Circle {y = 7; r = 8;}, Circle.copy(Circle(9, 10, 11))
];
for(shape in shapes) {
shape.print();
}
}
</lang>


=={{header|Clojure}}==
=={{header|Clojure}}==