B = class("B");
function B:ctor(x, y)
self.x = x;
self.y = y;
end
function B:addOne()
self.x = self.x + 1;
self.y = self.y + 1;
end
function B:printf()
print(self.x, self.y);
end
C = class("C", B);
function C:ctor(x, y, z)
C.super.ctor(self, x, y);
self.z = z;
end
function C:addTen()
self.x = self.x + 10;
self.y = self.y + 10;
self.z = self.z + 10;
end
function C:printf()
C.super.printf(self);
print(self.z);
end
D = class("D", C);
function D:ctor(x, y, z, u)
D.super.ctor(self, x, y, z);
self.u = u;
end
function D:printf()
D.super.printf(self);
print(self.u);
end
local d1 = D.new(1, 2, 3, 4);
d1:printf();