【JAVAオブジェクト向けプログラミングメカニズム——パッケージング】1、クラスとオブジェクト(クラスの定義、オブジェクトの作成と使用、パラメータと実パラメータの伝達方式、方法の再ロード)


パッヶージせい
Javaのカプセル化は,オブジェクトの属性と属性に対する操作を独立した単位に結合し,内部の詳細をできるだけ隠すことである.次の2つの意味があります.
1)オブジェクトのすべての属性と属性に対する操作を結合し,分割不可能な独立単位(すなわちオブジェクト)を形成する.Javaは純粋なオブジェクト向けプログラム設計言語であり、基本データ型(例えば整数型、浮動小数点型など)を除いてJavnのデータはすべてオブジェクトの形式で存在し、属性と操作をオブジェクトにカプセル化し、クラス以外の属性と方法から遊離せず、詳細を効果的に隠すことができる.
2)情報隠蔽,すなわち可能な限りオブジェクトの内部の詳細を隠蔽し,外部に境界を形成し,限られた外部公開インタフェースのみを残して外部と連絡を取ることは,JavaパッケージJavaクラスとそのメンバーのアクセス権によって実現される.ブラックボックス、日常用品などの商業用品と理解できます.適用できる部分だけあげます.
1クラスとオブジェクト
クラスはJavaオブジェクト向けプログラム設計において最も基本的なプログラムユニットである.Javaプログラムを作成するときは、まずクラスを作成し、次にクラスを通じて異なるオブジェクトを作成します.プログラムが実行されると、オブジェクトには対応するメモリ領域があり、その具体的な属性値を格納し、オブジェクトによって対応するメソッド(メソッドによってメモリにアクセス)をアクティブにし、一定の機能を実現します.
1.1クラスの定義
Javaファイルに同じ名前のクラスがあり、publicで修飾できるのはそれだけです.
JAvaでclassキーワードで定義する:クラス宣言とクラスボディ
  • )クラス宣言:新しいオブジェクトタイプ
  • を作成する
    public class muchu{  //   class        public     
          //  
                  }
    
  • )クラス:クラスを定義すると、クラス内で定義できます.2つのクラスメンバー:属性とメソッド
  • 1、属性の定義属性の定義は2種類に分けられる:基本データ型オブジェクトタイプ:classキーワードで定義されたオブジェクトタイプ
    c言語基本データ型/ビット
    Java基本データ型/ビット
    char 1
    char16
    short 2
    $short16
    int 4
    int32
    long 4
    long64
    longlong 8
    float 4
    float8
    double 8
    double64
    longdouble 8
    boolean1
    byte8
    	public class Muchu{
    		private float x;
    		private float y;
    }
    
    	public class Shankong{
    		private Muchu mu1;
    		private Muchu mu2;
    }
    

    ・クラスMuchuの2つのアクセス権限は「private」属性であり、x,yの基本データ型はfloat(基本データ型)である.・クラスShankongの2つのアクセス権ビットprivate属性は、オブジェクトタイプです.ここでprivateが表す属性はプライベートであり、クラスの内部のみがアクセスできます.
    2、方法の定義
    メソッドの定義フォーマットには、メソッドのアクセス権、メソッド名、メソッドのパラメータリスト、戻りタイプ、メソッドボディが含まれます.・パラメータタイプとメソッドの戻りタイプには、オブジェクトタイプと基本データタイプがあります.
    3、構築方法の定義は実質的に初期化パラメータ1.)クラス名と同じ名前を持つ2.)戻り値がない(ある場合は構築方法ではなく、構築方法と同じ名前のメンバーメソッド)
    3).構造メソッドの呼び出しタイミングは一般的なメソッドとは異なる.一般的な方法は、必要に応じて呼び出され、構築方法はオブジェクトの作成時に自動的に呼び出され、構築方法の内容が実行されます.したがって,構築手法はプログラムで直接呼び出す必要はなく,オブジェクト生成時に自動的に実行される.4).上記の構成方法の特性に基づいて、オブジェクトのデータメンバーを初期化するための付与を行うことができる.
    5).クラスには何の構造方法も宣言されておらず,システムは自動的にクラスにパラメータなしで何もしない構造方法を追加し,以下のコードに類似する:public Person(){}
    6).ユーザが構築方法をカスタマイズすると,システムは無パラメトリック構築方法を提供しなくなる.ユーザーが手動で1つ追加します(必ず追加しますか?)
    7).構造方法はプライベートであってもよいが,必ずしもそのようなインスタンス化対象を生成できないとは限らず,このインスタンス化対象を生成する位置が変化するだけであり,すなわち,本クラスでのみインスタンス化対象を生成できる.
    例:Javaコンパイラが提供するデフォルトの構築方法
    public Muchu(){
    }
    

    データ型
    デフォルト値
    基本データ型
    0
    boolean
    false
    char
    \0
    オブジェクトタイプ変数
    null
    関数の構築方法の定義部分は次のとおりです.https://blog.csdn.net/ClinEvol/article/details/82870454
    1.2オブジェクトの作成と使用
    1、オブジェクトの宣言Javaのオブジェクトはc言語のポインタに似ており、オブジェクト変数の宣言後、システムは32ビットアドレス空間(4バイト)を割り当て、空間はnullである.
    例:宣言クラスMuchuのオブジェクト変数mu Muchu mu;
    2、オブジェクトの作成
    newオブジェクトは、オブジェクト変数宣言後にnewキーワード呼び出しクラスのコンストラクション関数でオブジェクトを作成してからのみ使用できます.
    Muchu mu = new Muchu(x,y);
    

    newオブジェクトのたびにクラスの新しいオブジェクトが作成され、メモリ領域が割り当てられます.オブジェクト変数の格納アドレスは変更できません.彼の指向するオブジェクトのアドレスにアクセスするだけです.
    3、オブジェクトの使用オブジェクト内のメンバー変数またはメソッドにアクセスする場合は、次の構文で実現できます.
        .        //    
        .   ()     //    
    

    たとえば、Personクラスのnameプロパティとageプロパティにアクセスするには、次の方法でアクセスできます.
    p1.name;   //  Person   name  
    p1.age;    //  Person   age  
    

    したがって、Personクラスのオブジェクトpにおける属性nameを「張三」、年齢付与を25とするには、以下のように書くことができる.
    p1.name = "  " ;
    p1.age = 25 ;
    

    Personのtalk()メソッドを呼び出すには、次のように書くことができます.
    p1.talk();   //  Person   talk() 
    

    1.3方法の形式パラメータと実際のパラメータの伝達方式
    Javaパラメータと実パラメータの結合方式は値伝達である.パラメータのデータ型には関係ありません.Muchu muchu1 = new Muchu(100,200);によってオブジェクトm 1が作成され、2つのメソッドchangeOne()とchangeTwo()が定義され、muchu 1が実パラメータとして2つのメソッドに渡されると仮定する.
    public static void changeOne (Muchu m1){
    	m1 = new Muchu(78,156);
    }
    
    public static void changeTwo(Muchu m1){
    	m1.setX(15);
    }
    

    m 1はパラメータとして、値伝達であるため、実際のパラメータmuchu 1は、その格納されたアドレスをパラメータm 1にコピーし、この場合、パラメータと実パラメータは異なるメモリ同一アドレスである.
    メソッドchangeOne()の呼び出しは、実パラメータのオブジェクトと実パラメータが指すオブジェクトには影響しません.(パラメータの値のみが変更され、オブジェクトの値は変更されません)メソッドchangeTwo()の呼び出しは、実パラメータには影響しません.実パラメータが指すオブジェクトにのみ影響します.(メソッドシェイプが指すオブジェクトのプロパティ値を変更しました)
    1.4方法リロード
    Javaでは、同じクラス内の複数のメソッドに同じメソッド名を付けることができますが、異なるパラメータリストがあります.これをメソッドリロード(method overloading)と呼びます.
    パラメータリストはパラメータ署名とも呼ばれ、 、 、 (順序付き)を含み、1つの違いがあればパラメータリストの違いと呼ばれます.
    リロードはオブジェクト向けの基本的なプロパティです.
    public class Demo {
     
    	//       ,    ,    
    	public void add(){
    		//method body
    	}
    	
    	//       ,          ,    
    	public void add(int a){
    		//method body
    	}
    	
            //       ,          ,    int 
    	public int add(int a,int b){
    		//method body
    		return 0;
    	}
     
    }
    

    上記の例から,リロードはクラス内で同じ関数名を持つが,形が異なる関数であることが容易に分かる.リロードの結果、1つのプログラムセグメントにコードとメソッドの種類をできるだけ減らすことができます.
    説明:
    ・パラメータリストの違いは、個数が異なり、順序が異なり、タイプが異なることを含む.・パラメータ変数名が異なるだけではいけません.・メンバーメソッドと同様に、構築メソッドもリロードできます.・finalと宣言する方法は再ロードできません.・staticとして宣言されたメソッドは再ロードできませんが、ここで宣言できます.
    メソッドのリロードのルール:
    メソッド名は同じでなければなりません.パラメータリストは異なる必要があります.メソッドの戻りタイプは同じでも異なってもよい.メソッドと呼ばれるリロードに足りないタイプの違いだけを返します.メソッドリロードの実装:メソッド名が異なる場合、コンパイラは呼び出しメソッドのパラメータの個数、パラメータタイプなどに基づいて1つずつマッチングし、対応するメソッドを選択します.マッチングに失敗すると、コンパイラは とエラーを報告します.
    メソッドのリロード:https://blog.csdn.net/xkfanhua/article/details/80561673