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();
	}
}
------------------------------------------------------------------------