< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> < 13> < 14> < 15> < 16> < 17> < 18> < 19> < 20> < 21> < 22> < 23> < 24> < 25> < 26> < 27> < 28> < 29> < 30> < 31> < 32> < 33> < 34> < 35> < 36> < 37> < 38> < 39> < 40> < 41> < 42> < 43> < 44> < 45> < 46> < 47> < 48> < 49> < 50> < 51> < 52> < 53> < 54> < 55> < 56> < 57> < 58> < 59> < 60> < 61> < 62> < 63> < 64> < 65> < 66> < 67> < 68> < 69> < 70> < 71> < 72> < 73> < 74> < 75> < 76> < 77> < 78> < 79> < 80> < 81> < 82> < 83> < 84> < 85> < 86> < 87> < 88> < 89> < 90> < 91> < 92> < 93> < 94> < 95> < 96> < 97> < 98> < 99> <100> <101> <102> <103> <104> <105> <106> <107> <108> <109> <110> <111> <112> <113> <114> <115> <116> <117> <118> <119> <120> <121> <122> <123> <124> <125> <126> <127> <128> <129> <130> <131> <132> <133> <134> <135> <136> <137> <138> <139> <140> <141> <142> <143> <144> <145> <146> <147> <148> <149> <150> <151> <152> <153> <154> <155> <156> <157> <158> <159> <160> <161> <162> <163> <164> <165> <166> <167> <168> | method void if_method(); } class C1:values IInteger implements I1{ method #Init(){puts("C1::#Init");} method #Clear(){puts("C1::#Clear");} method #Value(IInteger v){puts("C1::#Value");} method SelfType@ #operator+(IInteger v){puts("C1::#operator+");retref this;} method static void static_method(){puts("C1::static_method");} method final void final_method(){puts("C1::final_method");} method void normal_method(){puts("C1::normal_method");} method void I1@@if_method(){puts("C1::if_method");} } class C2:extends C1 values IInteger{ method #Init(){puts("C2::#Init");} method #Clear(){puts("C2::#Clear");} method #Value(IInteger v){puts("C2::#Value");} method SelfType@ #operator+(IInteger v){puts("C2::#operator+");retref this;} method forced_override void static_method(){puts("C2::static_method");} method forced_override void final_method(){puts("C2::final_method");} method override void normal_method(){puts("C2::normal_method");} } class C3:extends C2 implements I1{ method #Init(){puts("C3::#Init");} method #Clear(){puts("C3::#Clear");} method #Value(IInteger v){puts("C3::#Value");} method SelfType@ #operator+(IInteger v){puts("C3::#operator+");retref this;} method forced_override void static_method(){puts("C3::static_method");} method forced_override void final_method(){puts("C3::final_method");} method override void normal_method(){puts("C3::normal_method");} method void I1@@if_method(){puts("C3::if_method");} } class C4:wraps C1{ method #Init(){puts("C4::#Init");} method #Clear(){puts("C4::#Clear");} } class C5:wraps C4 implements I1{ method #Init(){puts("C5::#Init");} method #Clear(){puts("C5::#Clear");} method SelfType@ #operator+(IInteger v){puts("C5::#operator+");retref this;} method static void static_method(){puts("C5::static_method");} method final void final_method(){puts("C5::final_method");} method void normal_method(){puts("C5::normal_method");} method void I1@@if_method(){puts("C5::if_method");} } class C6:wraps C3{ method #Init(){puts("C6::#Init");} method #Clear(){puts("C6::#Clear");} } method void values_method1(values C1 v){puts("values_method1");} method void values_method2(values C2 v){puts("values_method2");} method void main(){ I1* i1; puts("C1"); C1 c1; C1* p1; c1+0; c1.static_method(); c1.final_method(); c1.normal_method(); p1#=c1; *p1+0; p1->static_method(); p1->final_method(); p1->normal_method(); p1->$static_method(); p1->$final_method(); p1->$normal_method(); i1#=c1; i1->if_method(); i1->$normal_method(); puts("C2"); C2 c2; C2* p2; c2+0; c2.static_method(); c2.final_method(); c2.normal_method(); p1#=c2; *p1+0; p1->static_method(); p1->final_method(); p1->normal_method(); p1->$static_method(); p1->$final_method(); p1->$normal_method(); p2#=c2; *p2+0; p2->static_method(); p2->final_method(); p2->normal_method(); p2->$static_method(); p2->$final_method(); p2->$normal_method(); i1#=c2; i1->if_method(); i1->$normal_method(); puts("C3"); C3 c3; C3* p3; c3+0; c3.static_method(); c3.final_method(); c3.normal_method(); p1#=c3; *p1+0; p1->static_method(); p1->final_method(); p1->normal_method(); p1->$static_method(); p1->$final_method(); p1->$normal_method(); p2#=c3; *p2+0; p2->static_method(); p2->final_method(); p2->normal_method(); p2->$static_method(); p2->$final_method(); p2->$normal_method(); p3#=c3; *p3+0; p3->static_method(); p3->final_method(); p3->normal_method(); p3->$static_method(); p3->$final_method(); p3->$normal_method(); i1#=c3; i1->if_method(); i1->$normal_method(); puts("C4"); C4 c4; //c4+0;//これはできない c4.static_method(); c4.final_method(); c4.normal_method(); i1#=c4; i1->if_method(); i1->$normal_method(); puts((*i1#==c4).to_s()); puts("C5"); C5 c5; c5+0; c5.static_method(); c5.final_method(); c5.normal_method(); i1#=c5; i1->if_method(); i1->$normal_method(); puts((*i1#==c5).to_s()); puts("C6"); C6 c6; //c6+0;//これはできない c6.static_method(); c6.final_method(); c6.normal_method(); i1#=c6; i1->if_method(); i1->$normal_method(); puts((*i1#==c6).to_s()); puts("values1"); values_method1(0); puts("values2"); values_method2(0); puts("end"); } |