Next: 8 要素型と参照型
Up: 7 インタフェース
Previous: 7.4 システムのインタフェース
/* 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日