/* Person.java */ public class Person { public String name; protected int age; private int phone; Person() { } Person(String name, int age) { this.name = name; this.age = age; } public int getAge() { return age; } public static void main (String[] args) { Person person = new Person(); System.out.println("名前 = " + person.name); System.out.println("年齢 = " + person.age); System.out.println("年齢 = " + person.getAge()); } }インタフェースとして以下のようなものを定義したとする.
/* MyInterface.java */ interface MyInterface { void display(); }これは,display()メソッドをもつインタフェース型を 定義している.
/* Parent.java */ public class Parent extends Person { Parent() { super("Parent",30); } void display() { System.out.println("Parent: " + name + " " + age); } void performClass(Parent p) { p.display(); } void performInterface(MyInterface m) { m.display(); } public static void main (String args[]) { Person a = new Person(); Parent p = new Parent(); Child c = new Child(); Other o = new Other(); // p.performClass(a); compile error p.performClass(p); p.performClass(c); // p.performClass(o); compile error // p.performInterface(p); compile error p.performInterface(c); p.performInterface(o); } }performClassは,ParentとそのサブクラスのChildのインスタンスを 受け付ける.performInterfaceは,MyInterfaceをもつChildと Otherのインスタンスを受け付ける. 以下の2つのChildとOtherをMyInterfaceインタフェースを 実装したクラスとして定義する.それぞれに,display()メソッドの 本体を定義する.
/* Child.java */ public class Child extends Parent implements MyInterface { public void display() { System.out.println("Child: " + age); } }
/* Other.java */ public class Other implements MyInterface { public void display() { System.out.println("Other"); } }mainメソッドをもったクラスを呼び出すことができる.
% java Person 名前 = null 年齢 = 0 年齢 = 0 count = 0, total = 48
% java Parent Parent: Parent 30 Child: 30 Child: 30 Other