Java拡張のオブジェクト向け(1)


1.abstractキーワード-抽象メソッドと抽象クラス

추상 메서드(Abstract Method)とは、宣言部があるが、実施部がない方法をいう.抽象的なメソッドを持つクラスは、추상 클래스(Abstract Class)と宣言する必要があります.では、なぜ抽象的な方法が必要なのでしょうか.
継承関係で親タイプオブジェクト参照変数を使用して子クラスオブジェクトを作成する場合は、親のメソッドは存在する必要がありますが、実装は困難です.この場合、抽象的な方法が使用されます.方法宣言は、あるが体がない形で実現する方法である.
また、抽象クラスはインスタンスになります.つまり、オブジェクトのクラスは作成できません.
したがって、抽象クラスを使用すると、予期せぬ親オブジェクトの作成を回避したり、親タイプ参照変数配列を使用してすべての子クラスを上書きする方法を使用すると、元の親がこの方法を必要とする問題を解決できます.
以下に整理します.
  • 抽象クラスでは、インスタンス、すなわちオブジェクトを作成できません.つまりnewは利用できません.
  • 抽象メソッドは、サブクラス実装メソッドを強制する.オーバーライト強制
  • 抽象メソッドを含む抽象クラスは抽象クラスでなければなりません.
  • 2.作成者


    クラスのインスタンス、すなわちオブジェクトを作成するたびにnewキーが使用されます.
    동물 뽀로로 = new 동물();
    newクラス名()をよく見ると、開いたカッコと閉じたカッコが見えます.を選択します.したがって,クラス名()も一つの方法である.戻り値がなくクラス名と同名のメソッドを生成オブジェクトと呼ぶメソッドを객체 생성자 메서드と呼ぶ.次いで생성자と略称され、より多くは称される.また,これらのメソッドを単独で作成しなくても,Javaはパラメータのないデフォルトジェネレータを自動的に作成する.パラメータを持つジェネレータをさらに作成することもできます.ただし、パラメータ付きジェネレータを作成すると、Javaはデフォルトジェネレータを作成しません.ジェネレータは開発者のニーズに応じてオーバーロードできます.

    以下に整理します.
  • の開発者がジェネレータを作成しない場合、Javaはパラメータのないデフォルトジェネレータを自動的に作成します.
  • パラメータを含むジェネレータを作成すると、Javaはデフォルトのジェネレータを作成しません.
  • 3.クラス作成時の実行ブロック、静的ブロック


    Javaでは、オブジェクト作成者とは異なり、クラス作成者は単独では存在しませんが、クラスが静的領域に配置されたときに実行されるコードブロックがあります.static 블록です.
    また、プログラムの起動時にすべてのパッケージとすべてのクラスがワークスペースにロードされるわけではなく、実際にはこのパッケージまたはクラスを初めて使用したときにロードされることを指摘します.このとき、クラスの静的ブロックは1回のみ実行されます.
    ここで、クラスが初めて使用される場合は、次の3つのケースの1つです.
  • クラスの静的属性は
  • である.
  • クラスの静的メソッドを使用する場合、
  • クラスのインスタンスが最初に作成された場合は
  • です.
    なぜ,プログラム実行時にクラスの情報をTメモリの静的領域に直接ロードせず,クラスの初回使用時にロードするのか.体力領域もメモリなので.メモリの使用を最大限遅く開始し、メモリの返却を最小限に抑えることがメモリ効率に役立ちます.もちろん、Javaはワークスペースに入ると、プログラムが終了する前にメモリを返すことはできませんが、できるだけ遅くロードし、メモリの使用を最大限に遅らせます.
    また、静的ブロックと同様に、クラスインスタンス用のインスタンスブロックも存在する.タグなしのブロックを使用している場合は、インスタンスを作成するたびにブロックが実行されます.ブロックは、オブジェクト作成者が実行する前に最初に実行されます.

    4.finalキーワード


    finalはfinalを意味する最後の単語です.finalキーワードが表示される可能性のある場所は、クラス、変数、メソッドです.

    1.finalとclass


    クラスにfinalがある場合は、継承は許可されません.したがって、サブクラスを作成できません.

    2.finalと変数

    package finalVariable;
    
    public class 고양이 {
        final static int 정적상수1 = 1;
        final static int 정적상수2;
        
        final int 객체상수1 = 1;
        final int 객체상수2;
        
        static {
            정적상수2 = 2;
            
            // 상수는 한 번 초기화되면 값을 변경할 수 없다.
            // 정적상수2 = 4;
       }
       
       고양이() {
           객체상수2 = 2;
           
           // 상수는 한 번 초기화되면 값을 변경할 수 없다.
           // 객체상수2 = 4;
           
           final int 지역상수1 = 1;
           final int 지역상수2;
           
           지역상수2 = 2;
        }
    }
    変数にfinalキーワードを追加すると、変更できない定数になります.静的定数は、宣言時に静的コードブロック内で初期化してもよいし、静的ジェネレータ内で初期化してもよい.オブジェクト定数は、宣言時に、オブジェクト作成者またはインスタンスブロックで初期化することもできます.領域定数は、宣言時に1回のみ初期化することもできます.
    他の言語では、読み取り専用定数ではfinalキーワードではなくconstキーワードが使用される場合がありますが、javaでは、このような混同を避けるためにconstをキーワードとして登録し、使用しません(not use).

    3.finalとmethod


    メソッドがfinalの場合、最終的なので、再定義、すなわち上書きは禁止されます.
    リファレンス
  • Javaオブジェクト向けSpringの入門原理と
  • を理解する