初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
クラス修飾子
クラス修飾子とはクラスの特性をあらわすために指定するものでクラス定義の
先頭に記述しなければいけません。
修飾子 |
説明 |
public |
すべてのクラスからアクセス可能 |
指定なし |
同じパッケージ内のクラスからアクセス可能 |
final |
サブクラスを持てないクラス |
abstract |
インスタンス化できないクラス |
public修飾子
今までpublic修飾子がいくつも出てきました。
クラス修飾子でも意味は同じです。
無制限にほかのクラスからのインスタンス化やアクセスを許可します。
また、public修飾子は必ず1ファイルの中に1つしか定義できない上に
publicを付けたクラスを必ずファイル名にしなければいけません。
指定なし
自クラスが所属するパッケージ内のクラスからのみオブジェクト生成やアクセスを許可する。
つまりパッケージが異なればアクセスできません。
パッケージについてはパッケージのページを参照してください。
final
finalを指定したクラスは自分を継承したサブクラスを作る事ができません。
つまり、finalクラスが一番下のクラス階層になります。
継承については継承のページを参照してください。
abstarct
abstactがつけられたクラスのことを抽象クラスといいます
抽象クラスには後ほど説明しますが、つまりインスタンス化できないクラスになります。
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クラスの両方に付けることができません