[Ava]OOP制御者(Modifier)[static,final,abstract]、アクセス制御者(access modifier)
せいぎょ者
クラスとクラスのメンバー(メンバー変数、メソッド)に付加的な意味を付与します。(英語:形容詞に似ている)
アクセス制御者と他の制御者に大別される。
コントローラ外部コントローラへのアクセス
1つのターゲットは複数のコントローラを使用できますが、アクセスコントローラは1回しか使用できません。
public class Modifier {
public static final int WIDTH = 200;
//public : 접근제어자 - 제일 앞에 붙임
//static, final : 제어자들
public static void main(String[] args) {
System.out.println("WIDTH = "+WIDTH);
}
}
static
public class Modifier {
public static final int WIDTH = 200;
//public : 접근제어자 - 제일 앞에 붙임
//static, final : 제어자들
public static void main(String[] args) {
System.out.println("WIDTH = "+WIDTH);
}
}
1)静的-ターゲット:メンバー変数
すべてのインスタンスの共通クラス変数になります.
クラス変数は使用可能で、インスタンスは作成されません.
クラスはメモリにロードされたときに生成されます.
2)静的目標:方法
インスタンスを作成せずに呼び出す静的メソッドです.
静的メソッドでは、インスタンスメンバーを直接使用することはできません.
class StaticTest {
staic int width = 200; //클래스 변수(static 변수)
static int height = 120; //클래스 변수(static 변수)
static { //클래스 초기화 블럭
//static변수의 복잡한 초기화 수행
}
static int max(int a, int b) { //클래스 메소드(static 메소드) - iv 사용불가
return a>b ? a:b;
}
}
final
1)final-ターゲット:クラス
変更できないクラス、拡張できないクラス.
最終的に指定されたクラスは、他のクラスの祖先ではありません.
//典型的なString、Math
2)final-ターゲット:メソッド
変更できない方法.
最終的に指定したメソッドは、上書きによって再定義できません.
3)final-ターゲット:メンバー変数/地域変数
変数の前にfinalを付けると、この値は変更できない定数になります.
final class FinalTest { // 조상이 될 수 없는 클래스
final int MAX_SIZE = 10; // 값을 변경할 수 없는 멤버변수(상수)
final void getMaxSize() { // 오버라이딩 할 수 없는 메소드(변경불가)
final int LV = MAX_SIZE; //값을 변경할 수 없는 지역변수(상수)
return MAX_SIZE;
}
}
class Child extends FinalTest {
void getMaxSize() {} // 에러 : 오버라이딩 불가
}
:finalに付属する変数は定数で、通常は宣言と初期化を同時に行います.
ただし、各インスタンスに固定値を持つインスタンス変数は、コンストラクション関数で初期化されます.
abstract
1)abstract-ターゲット:クラス
クラス内の抽象メソッドが宣言されていることを示します.
宣言だけ書いて、実施は書かない.(実施部=本体={})
abstract class AbstractTest { // 추상클래스 - 추상 메소드를 포함한 클래스
abstract void move(); // 추상메소드 - 구현부가 없는 메소드
}
AbstractTest a = new AbstractTest(); //에러 : 추상 클래스의 인스턴스 생성 불가 (추상클래스=미완성설계도, 인스턴스=제품, 미완성 설계도로는 제품을 못 만든다!)
アクセス制御者
メンバーまたはクラスに使用し、外部からアクセスを制限します。 メンバー変数とクラス、メソッド、作成者に使用できます。 (default)-何も貼らないことを表す
プログラム全体(制御プログラムなど)のpublicoooprotectedoodefultooprivateo
public-アクセス制限は全くありません.
protected-同じパッケージ内および他のパッケージのサブクラスからアクセスできます.
(default)-同じパッケージにのみアクセスできます.
private-同じクラスでのみアクセスできます.
アクセス可能範囲:public>protected>(default)>private
public class AcessModifier { // public이나 (default) 둘 중 하나 붙일 수 있음
int iv; // 멤버변수(인스턴스 변수)
static int iv; // 멤버변수(클래스 변수)
void method() {}
//위 3 멤버들에는 4가지를 붙일 수 있음 public, (default), protected, private
}
アクセス制御プログラムによるカプセル化
アクセス制御プログラムを使用する理由 : 1. 外部からデータを保護 2.不要な内部使用を隠すための部分
作成者のアクセス制御者
コントロールユニット
ターゲット使用可能な制御者クラスpublic(default)、final、abstractメソッドすべてのアクセス制御者、final、abstract、staticメンバー変数すべてのアクセス制御者、final、static領域変数final
1)方法はstaticとabstractを同時に使用できない.
->静的方法は、実装部品を有する方法にのみ適用される.
2)クラスはabstractとfinalを同時に使用できません.
->finalで使用されるクラスはクラスを拡張できませんが、abstractは継承によって完了する必要があります.これは矛盾しています.
3)抽象メソッドのアクセス制御者はプライベートであってはならない.
->抽象メソッドはサブクラスで実装する必要がありますが、アクセス制御者がプライベートである場合は、サブクラスからアクセスできません.
4)メソッドはprivateとfinalを同時に使用する必要はありません.
->アクセス制御者プライベートメソッドは上書きできません.どちらかを使うだけで十分です
Reference
この問題について([Ava]OOP制御者(Modifier)[static,final,abstract]、アクセス制御者(access modifier)), 我々は、より多くの情報をここで見つけました https://velog.io/@jeong11/Java-OOP-modifier-acessmodifierテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol