つぎのサンプル・アプリケーション"Cast22.java"を作成・実行してください。
- interface I {}
- interface J extends I {}
- public class A implements I {}
- public class B extends A {}
- public class C extends A implements J {}
-
- public class Cast22 {
- public static void main(String[] args) {
- Object o1 = new Object();
- A a1 = new A();
- B b1 = new B();
- C c1 = new C();
- I i1 = null;
- J j1 = null;
- A[] a2 = new A[10];
- B[] b2 = new B[10];
- Cloneable cl;
-
- // 暗黙の型変換
- o1 = a1; // スーパークラス <-- サブクラス
- i1 = j1; // スーパーインターフェース <-- サブインターフェース
- i1 = a1; // インターフェース <-- クラス
- i1 = b1; // スーパークラス <-- サブクラス
- o1 = i1; // Object <-- インターフェース
- o1 = a2; // Object <-- 配列型
- cl = a2; // Cloneable <-- 配列型
- a2 = b2; // スーパークラス配列型 <-- サブクラス配列型
-
- // キャスト
- o1 = new A();
- a1 = (A)o1; // スーパークラス --> サブクラス
-
- i1 = new C();
- j1 = (J)i1; // スーパーインターフェース --> サブインターフェース
-
- i1 = new A();
- a1 = (A)i1; // インターフェース --> クラス
-
- i1 = new B();
- b1 = (B)i1; // スーパークラス --> サブクラス
-
- o1 = new A();
- i1 = (I)o1; // Object --> インターフェース
-
- o1 = new A[10];
- a2 = (A[])o1; // Object --> 配列型
-
- cl = new A[10];
- a2 = (A[])cl; // Cloneable --> 配列型
-
- a2 = new B[10];
- b2 = (B[])a2; // Object --> インターフェース
- }
- }
$ javac Cast22.java
$ java Cast22