using System;
public class A
{
public A( )
{
Console.WriteLine ( "A::A(); called" ) ;
}
public A( String arg)
{
Console.WriteLine ( "A::A(" + arg + "); called" ) ;
}
}
public class B : A
{
public B( )
{
Console.WriteLine ( "B::B(); called" ) ;
}
public B( String arg)
{
Console.WriteLine ( "B::B(" + arg + "); called" ) ;
}
}
public class C : A
{
public C( ) : base( )
{
Console.WriteLine ( "C::C(); called" ) ;
}
public C( String arg) : base( arg)
{
Console.WriteLine ( "C::C(" + arg + "); called" ) ;
}
}
public class Test
{
public static void Main( )
{
A a1 = new A( ) ;
A a2 = new A( "a2" ) ;
Console.WriteLine ( ) ;
B b1 = new B( ) ;
B b2 = new B( "b2" ) ;
Console.WriteLine ( ) ;
C c1 = new C( ) ;
C c2 = new C( "c2" ) ;
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIEEKewoJcHVibGljIEEoKQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKCJBOjpBKCk7IGNhbGxlZCIpOwoJfQoKCXB1YmxpYyBBKFN0cmluZyBhcmcpCgl7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkE6OkEoIiArIGFyZyArICIpOyBjYWxsZWQiKTsKCX0KfQoKcHVibGljIGNsYXNzIEIgOiBBCnsKCXB1YmxpYyBCKCkKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiQjo6QigpOyBjYWxsZWQiKTsKCX0KCglwdWJsaWMgQihTdHJpbmcgYXJnKQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKCJCOjpCKCIgKyBhcmcgKyAiKTsgY2FsbGVkIik7Cgl9Cn0KCnB1YmxpYyBjbGFzcyBDIDogQQp7CglwdWJsaWMgQygpIDogYmFzZSgpCgl7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIkM6OkMoKTsgY2FsbGVkIik7Cgl9CgoJcHVibGljIEMoU3RyaW5nIGFyZykgOiBiYXNlKGFyZykKCXsKCQlDb25zb2xlLldyaXRlTGluZSgiQzo6QygiICsgYXJnICsgIik7IGNhbGxlZCIpOwoJfQp9CnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlBIGExID0gbmV3IEEoKTsKCQlBIGEyID0gbmV3IEEoImEyIik7CgkJQ29uc29sZS5Xcml0ZUxpbmUoKTsKCgkJQiBiMSA9IG5ldyBCKCk7CgkJQiBiMiA9IG5ldyBCKCJiMiIpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCk7CgoJCUMgYzEgPSBuZXcgQygpOwoJCUMgYzIgPSBuZXcgQygiYzIiKTsKCX0KfQ==