ホームページ >Java >&#&チュートリアル >Java クラスとオブジェクトの分析例

Java クラスとオブジェクトの分析例

WBOY
WBOY転載
2023-04-21 11:01:071018ブラウズ

1. クラスとは

クラス (クラス) は、オブジェクト指向プログラミング (OOP、オブジェクト指向プログラミング) における情報のカプセル化の基礎です。クラスはユーザー定義の参照データ型であり、クラス型とも呼ばれます。各クラスには、データの説明と、データを操作したりメッセージを送信したりするための一連の関数が含まれています。クラスのインスタンスはオブジェクトと呼ばれます。

クラスの本質は、byte、short、int、char に似た参照データ型です。 、long、float、double などの基本的なデータ型との違いは、複雑なデータ型であることです。その本質はデータではなくデータ型であるため、メモリ上に存在せず、直接操作することはできず、オブジェクトとしてインスタンス化された場合にのみ操作可能になります。

2. Java クラスと C 言語の構造の類似点と相違点

Java のクラスは実際には C 言語の構造と非常によく似ていることがわかりますが、それらの違いは何でしょうか?

1. パックされたオブジェクトは異なります

C 言語の構造はデータのパッケージ化です。全体的な処理を容易にするために、概念的に関連したデータをまとめてパックします。外部の世界はこれらのデータを自由に読み書きできます

Java オブジェクトはデータまたは責任をパッケージ化できます

2. 保存場所は異なります

C 言語構造は次のようになりますスタックまたはヒープに保存される

Java オブジェクトはヒープ上にのみ存在できます

3. クラスとクラスのインスタンス化

クラス メンバーには次のものを含めることができます: フィールド、メソッド、コード ブロック、内部クラスとインターフェイスなど。

クラスはテンプレートであり、クラスのインスタンス化はこのテンプレートを通じてオブジェクトを作成することであるため、明確に理解できます (テンプレートは無数のオブジェクトを作成できます)。

クラスの宣言は、実際には新しい型、参照型をカスタマイズすることと同じです。

クラスの宣言

基本形式:

class クラス名{
フィールド (メンバー変数/プロパティ);
メソッド (メンバー メソッド);
}

ここでのクラスはクラスのキーワードです

要素クラス内: 属性 (クラス内、メソッド外)

クラス内のメソッド: メンバー メソッド

次の例:

public class Dog {
    public String name;
    public int age;
    public void bark() {
        System.out.println("汪汪");
    }
}

Passed 上記のコードは、 name と age の 2 つの属性を持つ Dog クラス。この動作は

属性の前の public はアクセス修飾子です

メンバー メソッドの前に static## を追加しないでください

#インスタンス化されたオブジェクト、メンバーはデフォルト値のルールに従います

デフォルト値のルール: 0 の変形

Special:

参照タイプ: null

boolean :false 参照。メンバ変数は、メンバ変数にアクセスするために使用されます。通常のメソッドは、オブジェクト参照を通じて呼び出されます。メソッド名は、

静的プロパティ(静的メンバ変数)の呼び出しに使用されます。静的変更を追加します

次のコード:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;
    public void bark() {
        System.out.println("汪汪");
    }
}
 
public class Practice {
    public static void main(String[] args) {
        Dog dog = new Dog();   // 实例化一个对象
        System.out.println(dog.are);   // 通过.来访问
    }
}

注: 静的プロパティは引き続きデフォルト値の規則に従います

アクセス方法:

静的メンバー変数はオブジェクトに属しているのではなく、クラスに属しているため、オブジェクトの参照を通じてアクセスすることはできません。メンバー変数ではなくクラス名であることを知っておく必要があります。静的プロパティはアクセスされ、静的メソッドにはクラス名を通じてアクセスします。

次のように:

class Dog {
    public String name;
    public int age;
    public boolean are;
    public static int a;    // 静态属性
    public void bark() {
        System.out.println("汪汪");
    }
}

エラー例:

System.out.println(Dog.a);

クラスの静的プロパティにアクセスするためにオブジェクトは必要ありません。直接アクセスできます

注:

静的プロパティはメソッド領域に存在します

新しいオブジェクトの数に関係なく、静的プロパティのコピーは 1 つだけあります。

  • 静的メソッド値内で非静的データ メンバーにアクセスすることはできません。また、非静的メソッドを呼び出すこともできません

  • 静的メソッドはオブジェクトに依存しない

  • 4. コンストラクター メソッド

    まず考えてみたいのは、オブジェクトがどのようにして来るのかということです。存在するのか?
  • オブジェクトにメモリを割り当てます

適切なコンストラクターを呼び出します

  • new を使用してオブジェクトをインスタンス化するとき、初期化操作を完了するためにコンストラクターが自動的に呼び出されます。

    コンストラクターを作成します
  • メソッド名はクラス名と同じである必要があります

戻り値の型宣言はありません

  • 各クラスには少なくとも 1 つのコンストラクターがあります (定義されていない場合、システムはパラメーターなしのコンストラクターを自動的に生成します)

  • 次のコード:

    System.out.println(Dog.a);

    このコードには Dog クラスがあり、2 つのコンストラクターがあり、1 つはパラメーターなし、もう 1 つはパラメーターありです。new を通じてオブジェクトを作成するときは、次を使用します。パラメータを使用して構築した後、出力された結果を確認できます
  • ##つまり、実際にどの構築メソッドが呼び出されるかは、new に渡されたパラメータに依存することがわかります
注:

クラスにコンストラクターがない場合、システムはパラメーターのないコンストラクターを自動的に追加しますが、コンストラクターを自分で作成する場合、このパラメーターのないコンストラクターは補完されません。パラメータのないコンストラクタを使用する必要があるため、手動で記述する必要があります

Java クラスとオブジェクトの分析例

構築メソッドはオーバーロードもサポートしています

    this
  • this の役割

  • 多くの場合、これが現在のオブジェクトであると誤って考える人がいますが、実際にはこれは現在のオブジェクトへの参照です
  • 為什麼this不是對象,而是引用:

    我們要知道,建構方法是用來建立物件的,那麼在呼叫建構方法建立物件的過程中,這個物件還是不存在的,哪來的物件之說

    因此我們可以透過this去存取屬性、成員方法、建構方法(呼叫建構方法時,只能放在第一行,只能在建構方法裡面寫,只能用一次)

以上がJava クラスとオブジェクトの分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。