Java個人学習ノート心得の対象


コンストラクタ
メソッド名はクラス名と同じですが、戻り値がなく、voidも加算できません.
**最良:**クラスがパラメトリック構造を書き換えた場合、マシン上のパラメトリック構造がないことが望ましい.追加しないと、継承関係でエラーが発生する可能性がある
機能:
  • newキーワードを使用するには、コンストラクタ(本質的にはコンストラクタを呼び出す)
  • が必要です.
  • パラメトリック構造が定義すると、パラメトリック構造が定義
  • を表示する必要がある.
  • は、一般に値
  • を初期化するために使用される.
    構文:
    public class hello {
        public String _name;
        private int _age;
        //   ,      
        public hello(String name, int age) {
            this._name = name;
            this._age = age;
        }
    }
    

    ここで、_ageはプライベートで、コンストラクタに値を割り当てても、他のクラスでオブジェクトを作成しても呼び出せません.nameでいい
    オブジェクト向けの3つの特性:
    (継承あっての書き換え、書き換えあっての多態)
    パッケージ:
    意味:
  • プログラムのセキュリティ向上、データ保護
  • 非表示コードの実装詳細
  • 統合インタフェース
  • システムの保守性が
  • 増加
    カプセル化(データの非表示):
    通常、1つのオブジェクトのデータの実際の表示に直接アクセスすることは禁止され、操作インタフェースを介してアクセスする必要があります.これは情報の非表示になります.
    属性がプライベートでget/set
    例:
    helloというクラスでプロパティをカプセル化します.
    public class hello {
        //    
        private String name;
        private int age;
        //               
        //    public get set  
    
        //   get  ,           ,           
        //get          
        public String getName(){
            return this.name;
        }
        //   set  ,    void,          ,       
        //set         ,                   
        public void setName(String name){
            this.name =name;
           }
    }
    

    別のクラスでは、helloクラスのオブジェクトをインスタンス化し、パッケージ属性を呼び出します.
     hello h= new hello();
     h.setName("   ");//                 
     System.out.println(h.getName());//      ,    
    

    結果:
    王志凱
    継承:
    Javaではすべてのクラスがobjectのサブクラスです.デフォルトでobjectクラスを継承
    Javaではクラスは単一継承のみで、複数継承はありません
    構文:
    extends:拡張.子は親の拡張子です
    public class Student extends Person {
    }
    

    super:
    注意点:
  • superは親クラスの構築方法を呼び出し、構築方法の最初の
  • でなければならない.
  • superは、サブクラスのメソッドおよびまたは構築メソッドの
  • にのみ現れる必要がある.
  • superとthisは構造方法
  • を同時に呼び出すことができない.
    super VS this
  • が表すオブジェクトの違い
  • this:自己呼び出し者というオブジェクト
    super:親オブジェクトを表す適用
    前提:
    this:継承なしでも使用できます
    super:継承条件でのみ使用できます
    構築方法の違い:
    this():このクラスの構築方法を呼び出します.
    super():親クラスの構築方法を呼び出す
    書き換え(override):
    書き換えとは、子クラスに親クラスと同じメソッドを作成することですが、中のメソッド体が異なり、オブジェクトが呼び出されると、親クラスと同じメソッドを呼び出すことなく、子クラスの書き換えメソッドが呼び出されます.
  • 継承関係が必要であり、サブクラスが親を書き換える方法
  • メソッド名は同じでなければならず、メソッド体は
  • 異なることができる.
  • パラメータリストは同じ
  • でなければなりません.
  • 修飾子:範囲拡大可能、public>Protected>Default>private
  • から放出された異常:範囲、縮小できますが拡大できません:ClassNotFoundException->Exception
  • 書き換えはいずれもメソッドの書き換えであり、属性に関係なくプライベートメソッドは
  • を書き換えることができない.
  • 非静的方法は、
  • を書き換えることができる.
    静的メソッド静的メソッド:メソッドの呼び出しは左で定義されたデータ型のみに関係します.
    **非静的メソッド:**は書き換えと呼ばれます
    思考:なぜ書き直す必要があるのか.
    答え:親の機能子は必ずしも必要ではないか、必ずしも満足していないので、子は親の方法を書き直し、自分の必要な機能を加える必要があります.
    例:
    アプリケーションクラス:
    public class Application {
        public static void main(String[] args) {
            Student s = new Student();//      
            s.test();
            Person p = new Student();//      
            p.test();
        }
    }
    

    Personクラス:
    public class Person {
        public static void test(){
    
     System.out.println("person test");
        }
    }
    

    Studioクラス:
    public class Student extends Person {
        public static void test(){
    
        System.out.println("student test");
        }
    }
    

    出力の結果:
    studentのtest personのtest
    **解析:**この説明では、メソッドが静的メソッドの場合、呼び出しメソッドはStudent sおよびPerson pにのみ関係します.つまり、静的メソッドの場合、呼び出しメソッドはインスタンス化文にのみ関連します.
    Student s = new Student();
    
    Person p = new Student();
    

    左に関連して、どのクラスがどのクラスの方法なのか、そうでなければnewのクラスの方法です.
    マルチステート:
  • すなわち同一の方法は、送信対象によって異なる動作方式
  • を採用することができる.
  • オブジェクトの「実際のタイプ」(new Person()など)は決定されますが、オブジェクトを指すことができる「参照タイプ」(Personpなど)には
  • がたくさんあります.
  • 多態の存在条件:
  • 継承関係がある
  • サブクラス親メソッド
  • を書き換えた
  • 親の参照は、子オブジェクト
  • を指す.
    A a= new B();
    

    *
    注意:
  • マルチステートはメソッドのマルチステートであり、属性にはマルチステート性がない
  • 親クラスの参照タイプが損得子クラスのオブジェクトを指す場合、親クラスの参照タイプによって呼び出されるメソッドは、子クラスを指すが、子クラスが親クラスのメソッドを継承しているため、親クラスの機能を実現することができる.
  • 静的メソッド:メソッドの呼び出しは、左に定義されたデータ型のみに関連する
  • **非静的メソッド:**は
  • を書き換えることができます.
    一般的に言えば、
    オブジェクトが実行できる非静的な方法は、主にオブジェクトの左側のタイプを見て、右との関係は大きくなく、左側のタイプにある非静的な方法だけが実現でき、右側の方法だけが実現できない.
    B a= new B();//B                  A 
    A a= new B();//A       ,      ,             。
    

    static静的、final定数、privateプライベート修飾子の書き換えができないことがあって、自然に多態がありません
    Instanceof
    構文:A Instanceof B
    AとBは関係がありますか.trueありfalseなし
    使用方法:
    Studentクラスがextendsの親Personを継承しています
     Object o = new Student();
     System.out.println(o instanceof Student);
     System.out.println(o instanceof Person);
     System.out.println(o instanceof Object);
     System.out.println(o instanceof String);
    

    結果:
    true true true false
    タイプ変換:
    高回転低変換強制変換、低回転高自動変換
    親が子より高い
    構文:
    (Person)Student
    Static
    アクセスするクラスの変数がstatic変数である場合、このメンバーに直接クラス名.でアクセスできます.
    staticメソッドは、最初に1回しかロードされず、その後はロードされません.
    抽象クラス:
  • 抽象クラスは、抽象メソッドのみであり、メソッド体はありません.
  • サブクラスが抽象クラスを継承すると、抽象クラスのすべての方法、サブクラスが実現されます.(サブクラスもabstractであれば不要)
  • 特徴:
  • newはこの抽象クラスを出すことができなくて、サブクラスに頼ってそれを実現するしかありません
  • 抽象クラスはメソッドのみを書くことができ、メソッド体
  • はありません.
  • 抽象メソッドは抽象クラスの
  • でなければならない.
    個人的な考え方:
    抽象類の本当の役割は実現するためで、彼の目的は父類のある方法が意味がない時、しかしまたある時位置を占めなければならなくて、子類に必ず実現しなければならないことを注意します.例えば、電気には消費電力基準がありますが、大まかな電気(親)の消費電力基準は意味がなく、具体的に実際のある電気(子)だけが意味があるので、いっそ電気(親)には書かず、具体的な電気(子)で完成しますが、消費電力基準は実現しなければならないので、電気(親)が必要です注意する.これも実際の生活に合った結果であり、対象に向かう思考の体現である.
    (****はこの親が抽象クラスである場合に抽象関数を定義する(戻り値の前にabstractを付ける)あ、中の関数にはメソッドがありません.親は各サブクラスにどのようなメソッドを実装する必要があるか分からないので、サブクラスは親と同じ関数メソッドを作成するだけで、親を書き換える抽象メソッドを表し、独自の関数メソッドを実現することができます.また、サブクラスは抽象クラス(親)の抽象メソッド****)を書き換える必要があります.
    構文:
    abstract
    public abstract class Application {
    public abstract test();//     
    }
    

    インタフェース:
    宣言クラスのキーワードはclass、宣言インタフェースのキーワードはinterface
    インタフェースは構造方法もなく、もちろん実例化できない
    一般クラス:具体的な実装のみ
    抽象クラス:具体的な実現と規範(抽象方法)はすべてあります
    インタフェース:仕様のみ!自分で方法を書くことができなくて、専門の制約、制約と分離を実現します
  • インターフェースは規範で、定義は1組の規則で、現実世界の“もしあなたが...ならば必ず...”の思想を体現して、もしあなたが天使ならば、必ず飛ぶことができて、もしあなたが自動車ならば、必ず走ることができて、もしあなたが良い人ならば、必ず悪い人をやらなければならなくて、もしあなたが悪い人ならば、必ず良い人をいじめなければなりません
  • インタフェースの本質は契約であり、私たち人間の法律のように制定された後、みんなは
  • を遵守している.
  • OOの真髄は、オブジェクトの抽象であり、最もそれを体現できるのはインタフェース
  • である.
    構文:
    インターフェースはclassの代わりにインタフェースのキーワードを定義します
    implementsクラス継承インタフェースのキーワード
    例:
    UserServiceインタフェース:
    //interface       
    public interface UserService {
        //                public abstract
         void run(String name);//    public
         void delete(String name);
         void update(String name);
    }
    

    Teacherインタフェース:
    public interface Teacher {
        void teach();
        void classBegin();
    }
    

    UserServiceImpは、インタフェースのクラスを継承します.
  • クラスはインタフェースを実現することができ、implementsはインタフェース
  • を実現する.
  • がインタフェースのクラスを実現するには、インタフェースを書き換える方法
  • が必要である.
  • インタフェースは、マルチ継承
  • を実現することができる.
    //       , implements     
    //       ,          
    //         
    public class UserServiceImp implements UserService,Teacher {
        //UserService        ,           
        @Override
        public void run(String name) {
            System.out.println("    ");
        }
        @Override
        public void delete(String name) {
            System.out.println("    ");
        }
        @Override
        public void update(String name) {
            System.out.println("    ");
        }
        //Teacher       ,           
        @Override
        public void teach() {
            System.out.println("    ");
        }
        @Override
        public void classBegin() {
            System.out.println("    ");
        }
    }
    

    内部クラス:
  • 一つのクラスの内部で一つのクラスを定義するのは内部クラスであり、内部クラスにとって外のクラスは外部クラス
  • である.
  • 内部クラスは、外部クラスのプライベート属性
  • を実現することができる.
    使用方法:
    内部クラスを使用するには、まず外部クラスのオブジェクトをインスタンス化し、次にオブジェクトによって内部クラスをインスタンス化します.
    外部クラスのインスタンス化:
    Student t = new Student();
    

    内部クラスのインスタンス化:
    Student t = new Student();
    t.hand hand= t.new hand();//