17‐1 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1 = 10; } class Class02 extends Class01 { int num2 = 20; } class Exer17_01 { public static void main(String[] args){ Class01 c1 = new Class02(); System.out.println(c1.num1); } } ------------------------------------------------------------------------ 17‐2 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1 = 10; } class Class02 extends Class01 { int num2 = 20; } class Exer17_02 { public static void main(String[] args){ Class01 c1 = new Class02(); System.out.println(c1.num2); } } ------------------------------------------------------------------------ 17‐3 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { void print(){ System.out.println("Class01!"); } } class Class02 extends Class01 { void print(){ System.out.println("Class02!"); } } class Exer17_03 { public static void main(String[] args){ Class01 c1 = new Class02(); c1.print(); } } ------------------------------------------------------------------------ 17‐4 (1) 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1 = 10; } class Class02 extends Class01 { int num2 = 20; } class Exer17_04 { public static void main(String[] args){ Class01 c1 = new Class02(); Class02 c2 = c1; System.out.println(c2.num2); } } ------------------------------------------------------------------------ (2) 上記クラスはコンパイルが失敗します。キャストを使用して、コンパイルが成功するようにしなさい。 (3) 実行した結果を予想しなさい。 17‐5 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1 = 10; } class Class02 extends Class01 { int num2 = 20; } class Exer17_05 { public static void main(String[] args){ Class01 c1 = new Class01(); Class02 c2 = (Class02)c1; System.out.println(c2.num2); } } ------------------------------------------------------------------------ 17‐6 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1; int num2; Class01(int num1, int num2){ this.num1 = num1; this.num2 = num2; } void print(){ System.out.println("num1 = " + num1); System.out.println("num2 = " + num2); } } class Class02 extends Class01 { int num3; Class02(int num1, int num2, int num3){ super(num1, num2); this.num3 = num3; } void print(){ super.print(); System.out.println("num3 = " + num3); } } class Exer17_06 { public static void main(String[] args){ Class01 c1 = new Class02(10, 20, 30); c1.print(); } } ------------------------------------------------------------------------ 17‐7 次のクラスをコンパイル・実行するとどのようになりますか? ------------------------------------------------------------------------ class Class01 { int num1; Class01(int num1){ this.num1 = num1; } } class Class02 extends Class01 { Class02(){ super(); } } class Exer17_07 { public static void main(String[] args){ Class01 c1 = new Class02(); } } ------------------------------------------------------------------------