[Java]修飾子(制御者)


私たちはすべての制御者ではなく、簡単なものだけを議論します.

制御者?


クラス、変数、またはメソッドに使用される宣言子は、追加の意味を与えます.
アクセス制御者と他の制御者に大別される.
アクセス制御者:public、protected、default(none)、private
static, final, abstract, native, transient, synchronized, volatile, strictfp
ここではアクセス制御者が1人しか使用できません.
静的は処理が多いのでスキップします.

ファイナルコントローラ


基本変数セクションでfinalについて説明します.
cont宣言と同様に、変数を定数に変換する機能があります.
この機能はクラスとメソッドでも同じです.
方法の中では当たり前ですが、過剰な生活も実現できないことを覚えておく必要があります.
クラスは変更できません.たとえ継承が不可能になっても.
また,インスタンスメンバーについても覚えておくべき点がある.
class a {
    final int b; // 상수인데 초기화를 바로 안해도 된다.
    a(int b) {
    	this.b = b; // 생성자에서만 딱 한번 값을 넣을 수 있다.
    }
}
定数ですが、すぐに初期化する必要はありません.初期化の代わりにジェネレータで使用できます.

抽象


abstractは、未完了のクラスまたはメソッドに使用されます.
未完了のクラスまたはメソッドを作成する理由
継承または超越によって使用が完了すると見なすことができる.
つまり、ガイドラインを提供することに似ています.
ではガイドラインが必要なときは必ず抽象化すればいいのでしょうか?
正確には、ガイドの提供は後で学ぶインタフェースなので、後で考えたほうがいいです.

アクセス制御者


アクセス制御者は、メンバーまたはクラスにアクセス範囲を指定します.
private
同じクラス内でのみアクセスできます.
default
同じパッケージ内でのみアクセスできます.
protected
同じパッケージ内および他のパッケージのサブクラスへのアクセスを許可します.
public
すべて使用可能にします.
つまり、大きな順序で範囲をリストすると、
public > protected > default > private
この順番から分かる.
アクセス制御者は、オブジェクト向けのプロパティの1つとしてカプセル化されていることを確認できます.
アクセス制御者の効果は次のとおりです.
データを外部から保護します.
外部は不要な内部で使用されている部分を隠します.
外部データ保護は、例外(プログラマーのエラー)を減らすことができます.
また、特定の条件で使用してもよい.

private作成者


コンストラクション関数にprivateがある場合がありますが、多くの場合原因があります.
インスタンスを作成しないでください.あるいは個数を制限する
この場合、継承できません.インスタンスの作成にも条件があります.
class A {
    private static A a = new A();
    private A() { ... }
    public static A getA() {
    	return a;
    }
}

public final class Arrays {
    private Arrays() { ... }
}
Aの場合、インスタンスの個数を1つに制限するために使用される方法.これにより、インスタンスを直接作成することはできません.静的メソッドで作成したインスタンスしか使用できません.
ArraysやMathのようなクラスでは静的メソッドのみがサポートされており、インスタンスの作成は許可されていません.
上記の場合、final controllerを使用して継承できないことを通知するのが望ましい.

コントロールユニット


多くのコントローラを組み合わせて、特定の意味を持つクラスまたはメソッドを作成できます.
しかし、制御者の意味が衝突して使えない場合もある.
  • 静的および抽象的には使用できません.
  • 体幹がなければ、静態宣言は不可能だからだ.
  • クラスではabstractとfinalは同時に使用できません.
  • 抽象クラス自体は使用できません.クラスを継承するためです.この場合finalは抽象クラスの意味を削除します.
  • メソッドではabstractとprivateは一緒に使用できません.
    これは
  • 位と似ている.
  • メソッドでprivateとfinalを同時に使用する必要はありません.
  • メソッドはいずれも2つのメソッドが重なることは不可能です.
  • また、1つのjavaファイルには共通クラスしか含まれません.このクラスの名前はjavaファイルの名前と同じでなければなりません.