簡単な入れ子構造を扱う #10

まずは名前で識別される性質を持っている側面からのGradeやGroupから抜き出す。
Studentも名前を持つが名前だけで識別されるわけではないので仲間ではないと考える。

school/Named.java
package school;

interface Named {
    String getName();
}
school/NamedSupport.java
package school;

class NamedSupport implements Named {
    private String name;

    NamedSupport(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

これらはパッケージ外で使用されるつもりがないのでとりあえずデフォルトアクセスにしておく。