せいぎょ者


せいぎょ者


コントロールバー

  • クラス、変数、メソッド付加機能を付与するキーワード
  • アクセス制御者
  • 変数、メソッド、生成者のアクセス可能範囲を特定するキーワード.
  • Javaファイル名などの共通クラス名は必須です.
  • private–同じクラスでのみ使用でき、内部実装のみに使用できます.
  • default-package(制御別名にpackage、defaultは使用されません.)
    同じパッケージで使用できます.
  • protected–privateと似ていますが、継承する場合は、実装時にアクセスが必要な場合に使用します.
    子供なら他のコースでも近づけるので、親の親は怒らない.
  • public–どこでも利用可能.
  • クラスはpublicとdefaultしか使用できません.
  • その他の制御者
  • 特殊機能を持つ制御者
  • static, final, abstract, synchronized
  • 画像ソース
  • アクセス制御者

    package com.company.s04.p05.subp01;
    public class ClassA {
        public  int x;
        protected  int y;
        int z; // default (=package)
        private int w;
    
        public void methodA(){} //
        protected void methodB(){} //
        void methodC(){}//default (=package)
        private void methodD(){} //private - 내부 구현을 위해서만 사용.
    
        public void methodTest(){ //같은 클래스
            System.out.println(x);
            System.out.println(y);
            System.out.println(z);
            System.out.println(w);
    
            methodA();
            methodB();
            methodC();
            methodD();
        }
    }
    
    class ClassATest{ // 같은 패키지인 경우.
        public static void main(String[] args) {
            ClassA obj = new ClassA();
            System.out.println(obj.x);
            System.out.println(obj.y);
            System.out.println(obj.z);
            //System.out.println(obj.w); 접근 불가
    
            obj.methodA();
            obj.methodB();
            obj.methodC();
            //obj.methodD(); private 검색도 안됨
        }
    }
  • その他小包
  • package com.company.s04.p05.subp02;
    import com.company.s04.p05.subp01.ClassA;
    
    class ClassAA extends ClassA{
        public void methodTest(){
            System.out.println(x);
            System.out.println(y); 
           // protected 자식이면 다른 패키지여도 ok 실제로 많이 씀. 
           // 하나의 자식 외에는 못봄. 부모의 부모는 건들 수 없음.(자바특성)
           // protected는 private처럼 쓰지만, 상속한 경우 구현 시 접근이 필요 할 때 사용.
           // System.out.println(z);
           // System.out.println(w); private - 상속해도 못봄
    
            methodA();//public
            methodB();//protected
            //methodC();
            //methodD();
        }
    }
    
    // public default만 사용 가능, 
    // private은 쓸 수 없음 같은 클래스만 볼 수 있기 때문에 다른 클래스라는 개념이 없기 때문에. 
    // protected도 사용 불가.
    public class ClassB {
        public static void main(String[] args) {
            ClassA obj = new ClassA();
            System.out.println(obj.x); //다됨 public
           // System.out.println(obj.y); //protected 다른 패키지인경우 자식만됨.
            //System.out.println(obj.z); //default 다른 패키지이면 안됨.
            //System.out.println(obj.w); 접근 불가
    
            obj.methodA();
            //obj.methodB();//protected 다른 패키지인경우 자식만됨.
            //obj.methodC();//default 다른 패키지이면 안됨.
            //obj.methodD(); private 검색도 안됨
        }
    }

    public openとprivateは閉じてpublic方法の違いを提供します

  • 2つの違いがある
  • getterは許可、setterは許可しない(許可しない)
  • メソッドにおける有効データの処理が可能である.
  • boolean isValidメンバー変数の宣言でtrueの場合に正しい日付が出力されるため、制限事項が与えられる
  • メンバー変数なのでクラス全体で使用可能;(scope、範囲)メソッドで値を変更するとメンバー変数の値が変更される
  •     public class MyDate {
            private int day;
            private int month;
            private int year;
        
            private boolean isVaild = true;
        
            public  void setDay(int day){
                this.day = day;
            }
            public int getDay(){
                return day;
            }
        
            public int getMonth() {
                return month;
            }
        
            public void setMonth(int month) {
                if(month <1 || month > 12){
                    isVaild = false; // 값이 유효범위에 해당하는지 체크를 해준다.
                }
                this.month = month;
            }
        
            public int getYear() {
                return year;
            }
        
            public void setYear(int year) {
                this.year = year;
            }
        
            public void showDate(){
                if (isVaild){
                    System.out.println(this.year + "년" + this.month + "월" +this.day+"일");
                }else{
                    System.out.println("유효하지 않은 범위 입니다.");
                }
        
            }
        
        
        }

    その他の制御者

  • final
  • これ以上変えられないという意味です.
  • クラス、メソッド、変数に使用可能
  • ランク:引き継げない
  • メソッド:サブクラスでの過剰使用はできません.
  • メンバー変数:変数の値は初期化後も変わらない.
  • 生成者において初期化を行うことをblankfinal変数と呼ぶ.
  •  public class Foo {
         final int x = 0; // final variable
         final int y; // blank finial variable
     
         public Foo(int y) {
           this.y = y; // blank final variable initialization
       }
     }
  • static
  • クラス変数、クラスメソッドなどを宣言するためのもの
  • 클래스의または공통적인の意味を持つ.
  • staticを持つメンバー変数、メソッド、および初期化ブロックは、インスタンスを作成することなく使用できます.
  • メンバー変数:すべてのインスタンスで共通に使用されるクラス変数となり、クラスがメモリにロードされたときに生成されます.
  • メソッド:インスタンスを作成することなく呼び出す静的メソッドとなり、静的メソッド内でインスタンスメンバーを直接使用することはできない.
  • abstract
  • 抽象クラスは、抽象メソッドの前に貼られた制御者である.
  • 「抽象的」または「未完成」の意味を持つ.
  • メソッド宣言のみを作成し、実際の操作を実行しない抽象メソッドを宣言する
  • abstractクラス:クラス内に抽象メソッドが宣言されていることを示します.(抽象的な方法は必要ありません.)
  • abstract方法:「宣言簿のみを記入し実施簿を記入しない方法」;で終了します.
  • synchronized
  • 同期プログラミング用.
  • アクセス制御プログラムを使用して情報を非表示にする

  • クラス内の情報への外部アクセス禁止、秘密鍵利用
  • プライベート変数を外部から近づけるには、共通の方法を提供する.
    クラス内部のデータを誤って使用することを防止できます.
  • モノトーンモード

  • オブジェクトが1つしかないクラス
  • プライベートジェネレータを使用する.
  • class SingletonClass {
      private static SingletoneClass instance = new SingletonClass();
      private SingletonClass() {}
    
      public static SingletonClass getInstance() {
          return instance;
      }
    }