OOP(オブジェクト向けプログラミング)基礎2-Java言語

4599 ワード

前回のブログでは、OOPのクラスの基本的な定義をまとめました.
Javaには多くのクラスがあるため、いくつかのクラスの間に継承関係があります.では、継承とは何でしょうか.
一.継承
オブジェクト向けプログラミングでは、既存のクラスの内容をもう一度書く必要がなく、既存のクラスに基づいて新しいクラスを定義できます.これを継承と呼びます.
例:
1つの生活の中の例を挙げます:コンピュータは1つの類で、コンピュータはインターネットを利用することができます.デスクトップやノートパソコンなどはパソコンのサブクラスで、インターネットに利用できます.
 
私たちはなぜ継承を使うのですか?
  • 便利で、多くの重複するコードを少なく使う(コードの再利用性を高める).
  • は、プログラムの拡張性を向上させる.

  • 継承と継承の使用理由について説明します.java継承の構文フォーマットを見てみましょう.
    JAva継承キーワード:extends
    書式:
     public class   (       ) extends   (       ){
             //  
    }
    

    注:子クラスが親クラスを継承する場合は、パラメータの数、パラメータタイプ、パラメータ順序、および親構造関数が完全に同じ構造関数を持つ必要があります.
     
    例:public class UNStudent extends Studio{}
    この継承では、Studioクラスにコンストラクション関数が存在する場合:
    public Student(String name){
    	this.name = name;
     }

     
    では、サブクラスUNStudioには、次のような構造関数が存在する必要があります.
     public UNStudent(String name) {
    	super(name);
                      //super                          。
    }
    

     
    親を継承する子を定義しましたが、子は親とどのような関係にあるのでしょうか.つまり、
    子クラスが親クラスに継承できるメソッドと属性は?
    子クラスは、親クラスのすべての属性とメソッド(構築メソッドを除く)に継承できます.
    サブクラスは属性とメソッドを継承していますが、それらは使用できますか?
    子クラスでは、親クラスのメソッドと属性の一部を使用できます.
                       1.共通の属性と方法
                       2.保護されたプロパティとメソッド
                       3.デフォルトのプロパティとメソッド(アクセス修飾子を書かないプロパティとメソッド)
     
    例:同じStudioとUNStudioの例です.
    public class Student {
         private String name;//        
         private double score;//        
         public void study(){
            score++;
    	System.out.println(name+"     ,   "+score);
         }
    }
    

     
    それに応じて義子類を定める
    public class UNStudent extends Student {}

     
    この場合、UNStudentはStudentのすべての属性とメソッドを継承しますが、使用できるのはstudy()というメソッドだけです.
     
    二.親クラスと子クラスが同じメソッドですが、子クラスのメソッドの具体的な実装と親クラスが異なる場合は、メソッドの書き換えを使用します.
    メソッドの書き換え:
    書き換えの条件は次のとおりです.
               1.メソッドの戻り値データ型、メソッド名、パラメータ個数、パラメータタイプ、およびパラメータ順序は、親と完全に同じである必要があります.
               2.サブクラスがメソッドを書き換える場合、メソッドのアクセス修飾子は、親メソッドのアクセス修飾子よりも大きくてもよいし、等しくてもよい.
    public-->protectedデフォルト-->private
    例:前の例と同じ
    Studentのクラスには、次のような学習方法があります.
    public void study(){
    	score++;
    	System.out.println(name+"     ,   "+score);
    }

    では、UNStudentサブクラスでは、次のように定義された別のstudy()メソッドを使用します.
    public void study(){
    	System.out.println(this.getName()+"        !");
    }
    

    生活の中で似たような例があります.
    コンピュータには、デスクトップとタブレットが含まれています.パソコンがインターネットに接続できるのは1つの方法で、デスクトップのインターネットの方法は同じで、タブレットのインターネットはタッチスクリーンで使用することができて、それではタブレットのインターネットは1種の書き換えです.
     
    三.メソッド書き換え後の呼び出し:
    インスタンス化されたオブジェクトに基づいて異なる呼び出しが行われ、インスタンス化されたオブジェクトがサブクラスである場合、サブクラス内の定義または書き換えメソッドが優先され、サブクラスにこれらのメソッドがない場合は親クラス内のメソッドが呼び出されます.
    UNStudent un = new UNStudent("  ");
    //        
    un.study(5);
    //      ,         study()  。
    

     
    子クラスと親クラスの2つのクラスがあるため、オブジェクトをインスタンス化する過程で自動的に変換されます.
    条件:自動転換を実現するには、継承関係が必要です.
    フォーマット1:
    親クラス名オブジェクト名=newサブクラス名()
    Student stu = new UNStudent();

     
    もう一つの特殊だが重要な自動転換がある.まず現実の例を挙げましょう
    大学生の英語を教える先生、taは大学生を教えて、それではこの先生は小学生を教えることができますか?中学生、高校生、他のタイプの学生を教えることができますか?
    public class Teacher {
         /**
          *          
          * @param stu          ,           Student  Student        。
          */
          public void teach(Student stu){
    	    System.out.println(name+"  "+stu.getName()+"    !");
    	    stu.study();//           
          }
    }
    

     
    teachという方法では、親クラスStudioのstuというオブジェクトが渡され、すべてのStudioおよびStudioサブクラスのオブジェクトを受け入れることができることを示します.
     
    では、定義方法には自動転換があります.
    フォーマット2:
    public             (        ){
    	//            
    }
    

     
    オブジェクトのインスタンス化:
    1.親クラス名オブジェクト名A=new子クラス名()
    2.サブクラス名オブジェクト名B=newサブクラス名()
    呼び出し方法:
    1.方法名(対象名A);
    2.方法名(対象名B);
    自動転換の利点は
    重複する不要なコードを節約します.
     
     
    四.マルチステート:
    Javaクラスの継承を理解すると、メソッドの再ロード、継承、メソッドの書き換え、自動変換などの技術点によって引き起こされるいくつかの列の問題--マルチステートが存在します.
    複数の状態が存在する理由:
    Javaはコンパイル時に最終的に実行する方法がどれかを確定することはできません.呼び出されたメソッドが存在しないかどうかは、オブジェクト名のタイプによってのみ判断され、このメソッドがオブジェクト名のクラスに存在しない場合は、構文エラーが発生します.
    Javaは実行された瞬間だけ、最終的に実行する方法がどれなのかを知ることができます.
     
    このブログでは、クラスの継承と継承に関するいくつかの知識点を説明しています.ありがとうございます.