class Point3D extends Point {
# Fields
has z : rw int;
# Class method
static method new : Point3D () {
return new Point3D;
}
# Class methods
static method new_xyz : Point3D ($x : int, $y : int, $z : int) {
my $self = Point3D->new;
$self->set_x($x);
$self->set_y($y);
$self->set_z($z);
return $self;
}
# Instance methods
method clear : void () {
$self->SUPER::clear;
$self->{z} = 0;
}
method cloneable_clone : object () {
my $self_clone = Point3D->new_xyz($self->x, $self->y, $self->z);
return $self_clone;
}
method to_string : string () {
my $x = $self->x;
my $y = $self->y;
my $z = $self->z;
my $string = "($x,$y,$z)";
return $string;
}
}