クラス修飾子

クラス修飾子とはクラスの特性をあらわすために指定するものでクラス定義の
先頭に記述しなければいけません。

修飾子
説明
public
すべてのクラスからアクセス可能
指定なし
同じパッケージ内のクラスからアクセス可能
final
サブクラスを持てないクラス
abstract
インスタンス化できないクラス
順に説明していきます。

public修飾子

今までpublic修飾子がいくつも出てきました。
クラス修飾子でも意味は同じです。
無制限にほかのクラスからのインスタンス化やアクセスを許可します。
また、public修飾子は必ず1ファイルの中に1つしか定義できない上に
publicを付けたクラスを必ずファイル名にしなければいけません。

指定なし

自クラスが所属するパッケージ内のクラスからのみオブジェクト生成やアクセスを許可する。
つまりパッケージが異なればアクセスできません。
パッケージについてはパッケージのページを参照してください。

final

finalを指定したクラスは自分を継承したサブクラスを作る事ができません。
つまり、finalクラスが一番下のクラス階層になります。
継承については継承のページを参照してください。

abstarct

abstactがつけられたクラスのことを抽象クラスといいます
抽象クラスには後ほど説明しますが、つまりインスタンス化できないクラスになります。

また、public と 指定なしのクラス修飾子のことをアクセス設定修飾子
finalとabstractのクラス修飾子のことを属性設定修飾子といいます
なお、アクセス設定修飾子と属性設定修飾子の組み合わせで使用も可能です。

例として

public final class Sample60{    }
public abstarct class Sample60{    }
などの組み合わせも可能ですが、
final abctarct class Sample60{  }
は final と abstarct は意味が相違しているので使えません。

サンプルプログラム(Sample60.java)publicを指定したプログラム

public class Sample60{
    public static void main(String args[]){

    Super60 obj = new Super60();
    obj.method();

    }

}


class Super60{
        int d = 30;
       void method(){
      System.out.println("int d = " + d);

  }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

これは、問題ないと思います。
publicをSample60に付加しました。

サンプルプログラム(Sample60_1.java )

class Sample60_1{
    public static void main(String args[]){

  Super60_1 obj = new Super60_1();
    obj.method();

    }

}
public class Super60_1{
        int d = 30;
       void method(){
      System.out.println("int d = " + d);


    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

比較.comで簡単スクール選び!資格と講座の資料を無料で一括請求
【教材ソフトの格安セット申込も可能】デジハリ通信科 Webデザイン専攻


コンパイル・実行してみます。

最初に説明した通りpublicを付けたクラスでは必ずファイル名にしなければいけません。
したがって、この場合ではファイル名はSuper60_1.javaにしなければコンパイルエラー
になります。

また、次のようなプログラムもエラーになります。

サンプルプログラム(Sample60_2.java)

public class Sample60_2{
    public static void main(String args[]){
  Super60_2 obj = new Super60_2();
    obj.method();

    }

}
public class Super60_2{
        int d = 30;
       void method(){
      System.out.println("int d = " + d);
    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

やはり、これでも同じようなエラーが出力出ます。
publicは1つのファイルに1つしか定義できません。
このようにSample60_2クラス と Super60_2クラスの両方に付けることができません

ページのトップへ戻る