abstract class A {}
class B extends A {}
abstract class C extends B {}
new A;
new A(1);
new B;
new C;
var a : A;
var b : B;
var c : C;
a = new B;
b = new B;
c = new B;