コンテンツにスキップ

02-4: アクセス修飾子

いままでのJava プログラミングでpublicを多用していきました。public以外にも、private,protectedなどあります。

public class accessCheckPub(){
  static int non = 100;
  static public int pub = 101;
  static private int pri = 102;
  static protected int pro = 103;
  ///////////////////////////////////
  public static void main(){
    System.out.println("なんにんもしない。");
  }
}
宣言 補足 書けるところ 意味
何もつけない。 - 同一パッケージ内の全てのクラスからアクセス可能
public 1クラス最大1つ クラス、インターフェース、メソッド、変数、コンストラクタ どこからでも。クラスに書く場合、クラス名と同一名でないときけない。
private プライベート メソッド、コンストラクタ、変数 自ファイル内の自クラスのみアクセスできる
protected 守り付き メソッド、コンストラクタ、変数 同一パッケージ内のクラスまたはサブクラス自身からの呼出からアクセス可能

アクセス修飾子といわれるのは、以上のものです。なしのものは、パッケージプライベートと呼ばれます

大学の講義で一切でてきませんが、なにもつけなければ、ひとつのファイルになにもアクセス修飾子をつけていないクラスを複数定義することは可能です。
ただし、最初に呼び出されるmainのあるクラスは、publicかつ同一名にしないと呼び出しに失敗します。

//HogeA.java
public class HogeA{
  public static void main(String[] args){
    HogeB b = new HogeB();
  }
class HogeB(){
  String getRes(){
    return "Hoge!";
  }
}

そのほかの修飾子

修飾子名 クラス インタフェース メソッド コンストラクタ ブロック 変数 説明
static × × 静的(インスタンス化しない)
final × × × 上書禁止(サブクラス・オーバーロード・変数の再代入など)
abstract × × × 抽象修飾子.Impriment(実装)とともに用いる
native × × × × × ネイティブ修飾子.メソッドの存在を定義し、メソッド自体はほかの言語で書く(C言語やC++など)
synchronized × × × × 同期。並列(スレッド)処理の時、排他制御にする
transient × × × × × シリアライズ(ハードウェアとやり取りするためのバイトストリームへの変換)をしない。
volatile × × × × × 並列(スレッド)処理のとき、スレッド間で変数の値を共有する
strictfp × × × 高速性を犠牲にし、プラットフォームに依存せずに、浮動小数点数の値を厳密に定義する
const × × × × × × C言語やC++における定数。定義されているが、宣言しない。

このうち、授業に登場する修飾子として、static,final,abstract,synchronizedなどがあります。
これらは、後の章にて説明します。


最終更新日: 2021年4月30日