@blog.justoneplanet.info

日々勉強

Javaのパッケージ

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;
    }
}