next up previous
Next: 8 要素型と参照型 Up: 7 インタフェース Previous: 7.4 システムのインタフェース

7.5 インタフェースの例

/* 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


generated through LaTeX2HTML. M.Inaba 平成18年5月7日