【JavaSE】Javaオブジェクト向け三特性のパッケージング性


Javaの基礎を築き、コンセプトウィンドウを破る.
本カタログ
  • 1.パッケージ
  • とは
  • 2.Javaにおけるパッケージ性の体現
  • 法はパッケージ
  • である.
  • キーワードprivateもパッケージ
  • です.
  • 3.パッケージ最適化1-thisキーワード
  • 4.パッケージ最適化2——構造方法
  • 5.標準クラスコード-JavaBean
  • 1.パッケージとは
    オブジェクト向けの3つの特徴:カプセル化、継承、マルチステート.カプセル化は、クラスのコードおよびデータが他のクラスによって任意にアクセスされることを防止する保護バリアと見なすことができる.クラスのデータにアクセスするには、指定した方法で行う必要があります.適切なパッケージは、コードの理解とメンテナンスを容易にし、コードのセキュリティを強化します.カプセル化は簡単に言えば、いくつかの詳細情報を隠し、外部が見えない場合は呼び出します.
    2.Javaにおけるパッケージ性の体現
    方法はパッケージです
    いくつかの操作を方法にカプセル化します.
    public class Demo02Method {
        public static void main(String[] args) {
            int[] array = {5, 15, 25, 20, 100};
    
            int max = getMax(array);
            System.out.println("   :" + max);//   :100
        }
    
        //       ,         
        public static int getMax(int[] array) {
            int max = array[0];
            for (int i = 1; i < array.length; i++) {
                if (array[i] > max) {
                    max = array[i];
                }
            }
            return max;
        }
    }
    

    キーワードprivateもパッケージです
      privateを使用して修飾すると、本クラスには任意にアクセスできます.でも!本クラスの範囲外では直接アクセスできません.  privateメンバー変数に間接的にアクセスするには、メンバーメソッドによってアクセスする必要があります.これは、一対の子供Getter/Setterメソッドを定義することです.
  • は、setXxxまたはgetXxx命名規則と呼ばなければならない.
  • Getterでは、パラメータは使用できません.戻り値のタイプはメンバー変数に対応します.
  • Setterでは、戻り値がなく、パラメータタイプとメンバー変数が対応しています.


  • 注意:基本タイプのboolean については、GetterメソッドはisXxxの形式で書かなければなりませんが、setXxxルールは変わりません.
    間接アクセスの利点を例に挙げて説明し、名前と年齢の2つの属性を持つPersonクラスを定義します.  問題記述:Personの年齢を定義する場合、不合理な数値が設定されるのを阻止することはできず、年齢は負数ではない.  ソリューション:privateキーワードで保護する必要があるメンバー変数を修飾します.メンバー変数に直接アクセスできません.しかし、setXxx アクセスを呼び出すことによって、方法にいくつかの制限を加えることで、設定の不合理な数値を解決することができる.例プログラム:
    public class Person {
        String name; //   
        private int age; //   
    
        public void show() {
            System.out.println("  :" + name + ",  :" + age);
        }
    
        //       ,     age    
        public void setAge(int num) {
            if (num < 100 && num >= 9) { //        
                age = num;
            } else {
                System.out.println("     !");
            }
        }
    
        //       ,      age   
        public int getAge() {
            return age;
        }
    }
    
    public class Demo03Person {
        public static void main(String[] args) {
            Person person = new Person();
            person.show();//  :null,  :0
    
            person.name = "   ";
            //person.age = -20; //     private  ,    !     
            person.setAge(20);
            person.show();//  :   ,  :20
        }
    }
    

    3.パッケージ最適化1-thisキーワード
    メソッドのローカル変数とクラスのメンバー変数が重複する場合、「近接原則」に基づいてローカル変数を優先的に使用する場合に遭遇します.つまり、ローカル変数はメンバー変数(グローバル変数)を上書きします.この場合、クラス内のメンバー変数にアクセスする必要がある場合は、フォーマット:this. を使用して、クラス内のメンバー変数にアクセスする必要があります.
  • thisの意味:thisはクラスの現在の ( )、すなわちオブジェクト自身の参照を表します.
  • は、thisが現在のオブジェクトであることを理解し、「誰(オブジェクト)が呼び出す方法で、誰(オブジェクト)がthisであるか」を理解する.

  • 例プログラム:
    class Person1 {
        String name; //       
    
        //   name      
        //     name      
        public void sayHello(String name) {
            System.out.println(name + ",  。  " + this.name);
            System.out.println(this);//Person1@14ae5a5
        }
    }
    
    
    public class Demo01Person {
        public static void main(String[] args) {
            Person1 person = new Person1();
            //         
            person.name = "   ";
            person.sayHello("   ");//   ,  。     
    
            System.out.println(person); //    Person1@14ae5a5
        }
    }
    

    4.パッケージ最適化2——構造方法
      構築方法は、キーワードnewでオブジェクトを作成するときに、実際には構築方法を呼び出すオブジェクトを作成するための方法です.(オブジェクトのメンバー変数に初期値を割り当てます.)構築方法のフォーマット:
    public    (         ) {
    	       
    }
    

    注意事項:
  • の構造方法の名前は、存在するクラス名と完全に同じでなければならず、大文字と小文字も同じ
  • である.
  • の構成方法は、書き込み戻り値タイプがなく、voidも
  • を書かない.
  • の構成方法は、特定の戻り値
  • をreturnできない.
  • コンストラクションメソッドが作成されていない場合、コンパイラはデフォルトでコンストラクションメソッドを提供します.パラメータもメソッドボディも何もしません.*像:public Studio(){}
  • プログラムに少なくとも1つの構築方法が記述されると、コンパイラはデフォルトの構築方法を提供しなくなります.*構造方法を書いても、空参の構造方法を書く習慣があります.オブジェクトの作成時に、パスを忘れた場合、プログラムが間違っていることを防止します.
  • の構成方法もリロード可能である.リロード:メソッド名が同じで、パラメータリストが異なる.

  • 例プログラム:
    public class Student {
        private String name; //   
        private int age; //   
    	
    	//   (  )     
        public Student() {
        }
    	//           
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    このクラスを使用
    public class Demo01Student {
        public static void main(String[] args) {
            Student stu1 = new Student();
            stu1.setName("    ");
            stu1.setAge(20);
            System.out.println("  :" + stu1.getName() + ",  :" + stu1.getAge());
            System.out.println("=================");
    
            Student stu2 = new Student("    ", 21);
            System.out.println("  :" + stu2.getName() + ",  :" + stu2.getAge());
            stu2.setAge(22);
            System.out.println("  :" + stu2.getName() + ",  :" + stu2.getAge());
        }
    }
    /*    :
      :    ,  :20
    =================
      :    ,  :21
      :    ,  :22
     */
    

    5.標準クラスコード——JavaBean
    JavaBeanはJava言語記述クラスの標準仕様です.JavaBeanに準拠する標準パッケージクラスを作成します.通常、次の4つのコンポーネントが必要です.
  • すべてのメンバー変数はprivateキーワード修飾
  • を使用します.
  • 各メンバー変数に対する一対の子供Getter/Setterメソッド
  • を記述する
  • パラメータのない構造方法
  • を記述する
  • 全パラメータを記述する構造方法
  • このような標準的なクラスをJava Beanと呼び、次に標準的な学生クラスで展示します.
    public class Student {
        //     
        private String name;
        private int age;
    
        //         
        public Student() {
            System.out.println("         !");
        }
    
        //         
        public Student(String name, int age) {
            System.out.println("         !");
            this.name = name;
            this.age = age;
        }
    
        // Getter Setter
        public void setName(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getAge() {
            return age;
        }
    }
    

    学生クラスの使用
    public class Demo02Student {
        public static void main(String[] args) {
            Student stu1 = new Student(); //     
            System.out.println("============");
    
            Student stu2 = new Student("   ", 20); //     
            System.out.println("  :" + stu2.getName() + ",  :" + stu2.getAge());
            //                    ,       setXxx  
            stu2.setAge(21); //     
            System.out.println("  :" + stu2.getName() + ",  :" + stu2.getAge());
        }
    }
    /*    :
             !
    ============
             !
      :   ,  :20
      :   ,  :21
     */
    

    コメントを歓迎して、不足を指摘して、筆者は心から感謝しますo!