Interfaces
main.w
bring math;
interface Geometry {
area(): num;
perim(): num;
}
class Rect impl Geometry {
width:num;
height:num;
new(width:num, height: num) {
this.width = width;
this.height = height;
}
pub area(): num {
return this.height * this.width;
}
pub perim(): num {
return 2 * this.height + 2 * this.width;
}
}
class Circle impl Geometry {
radius:num;
new(radius:num) {
this.radius = radius;
}
pub area(): num {
return math.PI * this.radius * this.radius;
}
pub perim(): num {
return 2 * math.PI * this.radius;
}
}
let r = new Rect(3, 4);
let c = new Circle(5);
log(r.area());
log(r.perim());
log(c.area());
log(c.perim());
Wing console output
# Run locally with wing console
wing it
12
14
78.53981633974483
31.41592653589793