0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Java・学習ログ⑧】インスタンスとクラス機構

Posted at

教本に沿ってやってみたシリーズ、『第9章』です。
≪使用教材≫スッキリわかるJava入門 第3版 スッキリわかるシリーズ

インスタンスとクラス機構

  • ヒープ
    プログラムを実行する際にJVMが準備する大量のメモリ領域のこと。インスタンスの情報を格納するためのもの。必要とする容量に従って大きくなる。
public class Main {
    public static void main(String[] args) {
        Hero h; //Hero型の変数hをメモリ内に用意
        h = new Hero(); //1、Heroインスタンスを生成
                        //2、インスタンスが生成されたメモリの先頭番地がhに代入される(参照)
        h.hp = 100; //hに格納されているhpに100を代入(アドレス解決)
  • インスタンスの独立性
    同じクラスから生まれた異なるインスタンス(例…h1,h2)が互いに影響しあわないこと。

  • has-aの関係
    あるクラスが別のクラスをフィールドとして利用している関係。

public class Sword { //武器クラス
    String name;
    int damege;
}

public class Hero { //武器を所持した勇者のクラス
    String name;
    int hp;
    Sword sword;
    public void attack(){}
}

public class Main {
    public static void main(String[] args){
        Sword s= new Sword();
        s.name = "勇者の剣"
        s.damege = 30;
        Hero h = new Hero();
        h.name = "ヤマト";
        h.hp = 100;
        h.sword = s; //武器クラスに生成済みの武器インスタンスを代入;
        System.out.println("現在の武器は"+ h.sword.name); //勇者の剣の名前が表示される
}    
  • コンストラクタ
    newされた直後に自動的に実行されるメソッド。
    Heroクラスに定義されたコンストラクタにより、mainメソッド側での初期値代入が不要になる。下記のようにメソッド名がクラス名と等しく、メソッド宣言にvoidを含む戻り値の型が記述されていないメソッドが、コンストラクタと認識される。
public Hero(String name){ //引数で文字列を受け取る(newするときに渡す)
    this.hp = 100; //newした際に初期値として100が代入される
    this.name = name; //引数の値でnameを初期化 
}
  • デフォルトコンストラクタ
    Javaでは、「すべてのクラスは最低でも1つ以上のコンストラクタ定義をもっていなければならない」というルールが存在するが、1つもコンストラクタが定義されていない場合に限って「引数なし、処理内容なし」のコンストラクタが自動的に追加される。これをデフォルトコンストラクタという。
    例えば複数コンストラクタがある場合、同一の内容を繰り返し呼び出すには、thisを使用する。
public Hero(String name){ //コンストラクタ① 
    this.hp = 100; 
    this.name = name;
}
public Hero(){ // コンストラクタ②(①を呼び出している)
    this("ダミー");
}

次回、継承について。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?