Javaにはクラスの上にパッケージという概念がある。Pythonのモジュールの概念やPHP5.3以降の名前空間といった概念と似ている。
■コード
/HelloWorld/src/info/justoneplanet/Animal.java
せっかくなので親クラスを定義。
package info.justoneplanet.blog; public class Animal { protected String name = ""; public Animal(String name) { this.name = name; } }
/HelloWorld/src/info/justoneplanet/Dog.java
Animalクラスを継承したDogクラスを定義。同パッケージ内ならばimport無しで、Animalクラスを使用できる。
package info.justoneplanet.blog; public class Dog extends Animal { public Dog(String name) { super(name); } public String cry() { return super.name + ", bow!"; } }
/HelloWorld/src/HelloWorld.java
クライアントコードですな。importを使用することで、他のパッケージからデフォルト・パッケージにインポートしている。
import info.justoneplanet.blog.Dog; public class HelloWorld { public static void main(String[] args) { Dog pochi = new Dog("pochi"); System.out.println(pochi.cry()); } } // pochi, bow!
ちなみに以下のようにimportを使用せず、完全修飾クラス名を使用して書くこともできる。
public class HelloWorld { public static void main(String[] args) { info.justoneplanet.blog.Dog pochi = new info.justoneplanet.blog.Dog("pochi"); System.out.println(pochi.cry()); } }
但し、明らかに見づらいのでおすすめしない。
getterとsetterの定義
eclipseでは「ソース > getterおよびsetterの生成」をクリックしすると、自動的にこれらのメソッドが定義される。
package info.justoneplanet.blog; public class Animal { protected String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Animal(String name) { this.name = name; } }