program ideone;
{$mode objfpc} // directive to be used for defining classes
{$m+} // directive to be used for using constructor
Type
A = Class
public
val: integer;
vals: string;
valr: real;
public
procedure SetDefaultValue(DefValue:integer);virtual;abstract;
procedure SetDefaultValue(DefValue:real);virtual;abstract;
procedure SetDefaultValue(DefValue:string);virtual;abstract;
end;
Type
B = Class(A)
public
procedure SetDefaultValue(DefValue:integer);override;
end;
Type
C = Class(A)
public
procedure SetDefaultValue(DefValue:string);override;
end;
procedure B.SetDefaultValue(DefValue:integer);
begin
val := DefValue;
vals:= 'integer';
end;
procedure C.SetDefaultValue(DefValue:string);
begin
vals := DefValue;
val:= -1;
end;
var
bb,cc : A;
begin
bb := B.Create;
bb.SetDefaultValue(10);
{bb.SetDefaultValue('sdfsdf');}
writeln(bb.val, ' ', bb.vals);
cc := C.Create;
{cc.SetDefaultValue(10);}
cc.SetDefaultValue('sdfsdf');
writeln(cc.val, ' ', cc.vals);
cc.SetDefaultValue(10);
end.
cHJvZ3JhbSBpZGVvbmU7CnskbW9kZSBvYmpmcGN9IC8vIGRpcmVjdGl2ZSB0byBiZSB1c2VkIGZvciBkZWZpbmluZyBjbGFzc2VzCnskbSt9CQkgICAvLyBkaXJlY3RpdmUgdG8gYmUgdXNlZCBmb3IgdXNpbmcgY29uc3RydWN0b3IKVHlwZSAgCiAgQSA9IENsYXNzICAKICBwdWJsaWMKICAJdmFsOiBpbnRlZ2VyOwogIAl2YWxzOiBzdHJpbmc7CiAgCXZhbHI6IHJlYWw7CiAgcHVibGljCiAgICBwcm9jZWR1cmUgU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOmludGVnZXIpO3ZpcnR1YWw7YWJzdHJhY3Q7Cglwcm9jZWR1cmUgU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOnJlYWwpO3ZpcnR1YWw7YWJzdHJhY3Q7Cglwcm9jZWR1cmUgU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOnN0cmluZyk7dmlydHVhbDthYnN0cmFjdDsKICBlbmQ7ICAKVHlwZQogIEIgPSBDbGFzcyhBKQogIHB1YmxpYwogIAlwcm9jZWR1cmUgU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOmludGVnZXIpO292ZXJyaWRlOwogIGVuZDsKVHlwZQogIEMgPSBDbGFzcyhBKQogIHB1YmxpYwogIAlwcm9jZWR1cmUgU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOnN0cmluZyk7b3ZlcnJpZGU7CiAgZW5kOwpwcm9jZWR1cmUgIEIuU2V0RGVmYXVsdFZhbHVlKERlZlZhbHVlOmludGVnZXIpOwpiZWdpbgp2YWwgOj0gRGVmVmFsdWU7CnZhbHM6PSAnaW50ZWdlcic7CmVuZDsKCnByb2NlZHVyZSAgQy5TZXREZWZhdWx0VmFsdWUoRGVmVmFsdWU6c3RyaW5nKTsKYmVnaW4KdmFscyA6PSBEZWZWYWx1ZTsKdmFsOj0gLTE7CmVuZDsKCnZhcgoJYmIsY2MgOiBBOwoKYmVnaW4KCiAgYmIgOj0gQi5DcmVhdGU7CiAgYmIuU2V0RGVmYXVsdFZhbHVlKDEwKTsKICB7YmIuU2V0RGVmYXVsdFZhbHVlKCdzZGZzZGYnKTt9CiAgd3JpdGVsbihiYi52YWwsICcgJywgYmIudmFscyk7CiAgY2MgOj0gQy5DcmVhdGU7CiAge2NjLlNldERlZmF1bHRWYWx1ZSgxMCk7fQogIGNjLlNldERlZmF1bHRWYWx1ZSgnc2Rmc2RmJyk7CiAgd3JpdGVsbihjYy52YWwsICcgJywgY2MudmFscyk7CiAgCiAgY2MuU2V0RGVmYXVsdFZhbHVlKDEwKTsgIAplbmQu