メインコンテンツにスキップ
モジュール 2 · レッスン 1 / 2コース内の 3/14~12 min
モジュールのレッスン (1/2)

クラスとオブジェクト

Java は オブジェクト指向プログラミング (OOP) に焦点を当てた言語です。 OOP では、オブジェクトを使用して現実世界をモデル化します。オブジェクトには状態 (データ) と動作 (アクション) があります。

クラスとオブジェクト

  • クラス: オブジェクトのタイプのプロパティと動作を定義するブループリント (またはテンプレート) です。
  • オブジェクト: クラスから作成された具体的なインスタンスです。

たとえば、Car がクラスの場合、ガレージにある車が実際のオブジェクトになります。

インスタンスフィールドとコンストラクター

クラス内のデータは インスタンス フィールド (または属性) と呼ばれます。オブジェクト作成時の状態を初期化するには、コンストラクターと呼ばれる特別なメソッドを使用します。

コンストラクターは クラスと同じ名前 を持ち、戻り値の型 (void さえも) を持ちません。

Java
class Dog {
    // Instance fields
    String name;
    int age;

    // Constructor
    public Dog(String name, int age) {
        this.name = name; // 'this' refers to the current object's field
        this.age = age;
    }
}

new を使用したオブジェクトの作成

メモリ内にオブジェクトを作成するには、new キーワードの後に​​クラス コンストラクターを使用します。

Java
public class Main {
    public static void main(String[] args) {
        // Creating a Dog object
        Dog myDog = new Dog("Fido", 3);

        // Accessing fields
        System.out.println(myDog.name + " is " + myDog.age + " years old.");
    }
}

this リファレンス

Java の this キーワードは、コンストラクターまたはメソッドが実行されている現在のオブジェクトを参照します。これは主に、コンストラクター パラメーターがオブジェクトのインスタンス フィールドと同じ名前を持つ場合 (変数のシャドウイング)、曖昧さを避けるために使用されます。

Java
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username is the instance field, username is the parameter
    }
}

メモリ割り当て: スタックとヒープ

Java がメモリを割り当てる方法を理解することが不可欠です。

  1. スタック: メソッドに対してローカルなプリミティブ変数とオブジェクト参照 (メモリ アドレス) が格納される、高速で整理されたメモリ領域です。
  2. ヒープ: 実際のオブジェクトが割り当てられる、より大きな動的メモリ領域です (new キーワードを使用)。

Dog myDog = new Dog("Fido", 3); を宣言すると:

  • 参照 myDog が スタック に作成されます。
  • データを含む実際の Dog オブジェクトは ヒープ 上に作成されます。
  • myDog 変数は、ヒープ 上のオブジェクトの場所を指します。

自分で試してみてください

運動#java.m2.l1.e1
試行回数: 0読み込み中…

フィールド名と適切なコンストラクターを追加して、Person クラスを完成させます。次に、main メソッドで、Alice という名前の p という名前の Person オブジェクトを作成します。

エディターを読み込み中…
ヒントを表示

クラス内に「String name;」を記述し、コンストラクタ「public Person(String name) { this.name = name;」を宣言します。 }` を作成し、`new Person('Alice')` でインスタンス化します。

3 回の試行後に解決策が利用可能になります

運動#java.m2.l1.e2
試行回数: 0読み込み中…

タイトル (String) とページ (int) のフィールドを持つ完全なコンストラクターである Book クラスを作成し、main メソッドでタイトルが「白鯨」、600 ページの b という名前の本をインスタンス化します。

エディターを読み込み中…
ヒントを表示

Book で両方のフィールドを定義し、`this.title = title;` および `this.pages = pages;` を使用してコンストラクター内でマップし、`new Book('Moby Dick', 600)` を使用することを忘れないでください。

3 回の試行後に解決策が利用可能になります

運動#java.m2.l1.e3
試行回数: 0読み込み中…

フィールド名 (String) と価格 (double) を含む Product クラスと、両方のフィールドを初期化するコンストラクターを作成します。 main メソッドで、名前が Laptop、価格が 999.99 の p という名前の Product オブジェクトを作成します。

エディターを読み込み中…
ヒントを表示

Product で `String name;` フィールドと `doubleprice;` フィールドを宣言し、コンストラクターで `this.name = name;` と `this.price = Price;` を使用して割り当て、最後に main メソッドでオブジェクトを作成します。

3 回の試行後に解決策が利用可能になります