Javaクラス


今期の文章ではjavaの最も核心的で、最も基本的な内容を整理します.Java言語を使用する場合、知っておくべき内容は、次の文章の「継承」の構築でもあります.

クラスの定義


オブジェクト向け-オブジェクト向け


Javaといえば、まず思い浮かぶのがオブジェクト向けです.オブジェクト向けは、プログラミングに必要なデータを抽象化し、状態と動作を持つオブジェクトを作成し、これらのオブジェクト間の有機的なインタラクションによって論理を構築するプログラミング方法です.
さっきの文章はとても人情味があって、とても重要な考え方です...例で再説明します.LGノートパソコンの線図があります.私たちの生活の多くの対象の一つ、グラムに関するデータを考えてみましょう.実際、ノートパソコンはいろいろなことをしていますが、2つのことしか連想しません.
オン/オフ、およびストレージデバイスに格納されているファイルの数に関連する動作(アクション)は、ファイルをオン/オフ、およびパフォーマンスを向上させるために削除する動作です.以下に示すように、UML図として示す.

ノートパソコン名を記憶するname、記憶するファイル数numOfFiles、オン/オフ状態のflag、およびデータに関する動作を実現する方法.このコンテンツをコードに移行するとjavaclassになります.したがって,Javaのクラスはオブジェクトの設計図と見なすことができる.

設計図vs実物


classが設計図である場合、instanceは設計図によって作成された実物と見なすことができる.すなわち,データに基づいて行動できる主体である.objectという言葉はインスタンスを表すのに用いられ,実際の生活の対象を表すのにも用いられる.広く使われている.そのため、実際のグラムも客体である.
画像ソース:lg電子ホームページ
設計図
instance:実行可能なオブジェクト
object:オブジェクト(インスタンスの意味を含む)

グラムクラスの定義


JAvaで定義されているクラスの部分は大きく3つに分けられます.オブジェクトのステータスを格納するメンバー変数部分、ステータスに関連する動作を格納するメソッド部分、インスタンスを作成するときに使用するジェネレータ部分に分けられます.ジェネレータは通常、instanceとしてnamenumOfFilesを使用して作成されるとすぐに挿入され、メンバー変数を初期化する必要がありますが、パラメトリックconstructorは、次の例ではパラメータのない空のジェネレータのみなので省略できます.
public class LgGram {

    String name;
    int numOfFiles;
    boolean flag;
    
    LgGram() {
    
    }
    
    void turnOn() {
    }

    void turnOff() {
    }

    void accelerate() {
    }
}
この場合、classの名前は固有名詞であるため、最初のアルファベットは大文字でなければならず、classキーワードでclassを示す.さらに、アクセス制限の1つであるpublicは、クラスがglobal scopeであることを示す.

メソッドの定義


C/C++では関数と呼ばれ、Javaの世界では関数アイテムがメソッドです.LgGram状態に関連する挙動を定義する方法部分.
public class LgGram{

    String name;
    int numOfFiles;
    boolean flag;
    
    public LgGram() {
    }
    

    void turnOn() {
        if(!flag) flag= true;
        System.out.println("turn on "+name);
    }

    void turnOff() {
        if(flag) flag= false;
        System.out.println("turn off "+name);
    }

    void accelerate() {
        if(numOfFiles>=10) numOfFiles-=10;
        System.out.println("accelerate "+name);
    }
}
メソッドの構造は、この例では、アクセス制限子セクションに何も書き込まれていないため、パケットにdefaultにアクセスできます.
アクセス制限戻りタイプメソッド名(パラメータ)

ジェネレータの定義


メソッドは定義されましたが、メンバー変数は初期化されていないため、メソッドには意味がありません.ジェネレータでinstanceを作成すると、メンバー変数が初期化されます.前述したように、コンストラクション関数には空のコンストラクション関数があり、パラメータがなく、パラメータコンストラクション関数もあります.パラメトリックコンストラクション関数によって直接初期化されます.
String name ;
int numOfFiles;
boolean flag;


public LgGram(String name, int numOfFiles) {
        this.name = name;
        this.numOfFiles = numOfFiles;
}

public LgGram(String name, int numOfFiles, boolean flag) {
        this.name = name;
        this.numOfFiles = numOfFiles;
        this.flag = flag;
}

Q.setterはどうして使わないのですか。🤷‍♂️


そうだ.もちろん、メンバー変数にgetter/setterを書き込むことができます.ただし、すべてのメンバー変数に対してgetter/setterを使用する必要はありません.クラスの外部に公開する必要のない変数をできるだけ非表示にし、情報を使用して非表示にする必要があります.
グラムクラスでは、nameは一度に決めても変わらず、電源状態を示すflagの内部処理で済むので、numOfFiles万パック内はsetterで値を調整する必要があるかもしれません.では、次のコードを追加します.
public String getName() {
        return name;
}

public int getNumOfFiles() {
        return numOfFiles;
}

void setNumOfFiles(int numOfFiles) {
        this.numOfFiles = numOfFiles;
}

このキーワード


現在のクラスを示すためにthisキーが表示されます.同じ名前のローカル変数があっても、this.멤버변수이름の形式でメンバー変数を指示します.これは、明らかにするためのキーワードです.
public void setNumOfFiles(int numOfFiles) {
        this.numOfFiles = numOfFiles; // 멤버변수 numOfFiles에 파라미터로 받은 numOfFiles를 넣어라.
}

新キーワードinstancation


新はinstancationキーワードで、これまで定義したクラスインスタンスを作成します.newを使用してこそ、実行可能でメモリにロード可能な実際のオブジェクトになります.lg Gram,lg Gram 2はそれぞれの例となる.1つの設計図を使用して複数のオブジェクトを作成することは再利用可能です.
public static void main(String[] args) {
        LgGram lgGram = new LgGram("15ZD90N-VX50K",100);
        lgGram.turnOn();
        lgGram.turnOff();
        
        LgGram lgGram2 = new LgGram("16ZD90P-GX50K",100);
        lgGram2.turnOn();
        lgGram2.accelerate();
        lgGram.turnOff();
}
結果
turn on 15ZD90N-VX50K
turn off 15ZD90N-VX50K
turn on 16ZD90P-GX50K
accelerate 16ZD90P-GX50K
turn off 15ZD90N-VX50K
今日は状態と動作を持つオブジェクトを紹介し,次に継承されたオブジェクト間の有機的なインタラクションをまとめる.
リファレンス
https://docs.oracle.com/javase/tutorial/java/concepts/object.html
https://docs.oracle.com/javase/tutorial/java/concepts/class.html
https://www.oracle.com/java/technologies/object-oriented.html#1354
ドキュメントの更新を続行しています.コメントのフィードバックをいつでも残してください😉