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 3 years have passed since last update.

【Java開発】第6回 コンストラクタ

Last updated at Posted at 2020-09-21

#初めに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はコンストラクタについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第5回 クラスです。

##コンストラクタ

###・コンストラクタとは?

コンストラクタはクラスのインスタンスを生成するために使うメソッドです。

コンストラクタは「new」キーワードを使って呼び出します。

####コンストラクタの呼び出し方

クラス名 変数名 = new クラス名(引数);    // newの右にコンストラクタが位置する

####コンストラクタの書き方

アクセス制御子 クラス名(引数) {
    処理
}

メソッドの書き方が似ていますが、コンストラクタは戻り値が存在しません。

サンプルを見ながら説明します。

・サンプル

public class メインクラス名{							
    public static void main(String[] args) {							
    							
        //インスタンスの生成							
        Cat mugi = new Cat(3, "grey");    							
    }							
}							
 							
class Cat{							
	int age;						
	String color;						
 							
    //コンストラクタ(インスタンス生成時に実行される)							
    public Cat(int age, String color){							
		this.age = age;					
		this.color = color;					
    }							
}	

上記のように作成するとCatクラスのインスタンスを生成したと否やmugiのageとcolorに値が設定されます。

コンストラクタはインスタンスを生成するたびに呼び出され、

インスタンス作成時に実行する処理を指定することができます。

つまり、作成者が意図した通りインスタンスを生成することができます。

####※デフォルトコンストラクタ

javaコンパイラーはコンストラクタを作成していないクラスに対して、

デフォルトコンストラクタを追加させます。

デフォルトコンストラクタは実際のソースコードでは見えないですが、

以下のようなものが追加されます。

public クラス名() {

}

上記のような空のコンストラクタが追加され、

コンストラクタを作成しなくてもクラスのインスタンスを生成することができます。

しかし、デフォルトコンストラクタはインスタンスの生成以外の動作はしません。

・サンプル

class Test { 				
    int test;			
}				
				
public void main (String args[]) {				
    Test t1 = new Test();			
}				

上記のようなコンストラクタが作成されていなくても、インスタンス生成ができます。

class Test { 				
	int test;			
	public Test () {    //実際のソースコードでは見えないですが、このような			
			            //コンストラクタが追加されます。	
	}			
}				
				
public void main (String args[]) {				
		Test t1 = new Test();		
}				

デフォルトコンストラクタは一般のコンストラクタが作成されている場合には
使用できません。

クラスの作成者がインスタンス生成時に意図した処理を実行させたくてコンストラクタを

作成しますが、デフォルトコンストラクタを使用すると意図した処理を

実行させることができないのでです。

##this

###・thisとは?

thisはインスタンスが自分を参照するために使われる変数です。

thisはインスタンスのアドレスを示しています。

・サンプル


public class Dog {											
	public int age;										
	public String name;										
	public String species;										
											
	public Dog(int age, String name, String species) {										
		this.age = age;									
		this.name = name;									
		this.species = species;									
	}										
}

上記のサンプルを見ると

this変数を利用して自分(Dog)のage,name,speciesに接続して

パラメターのage,name,speciesを代入しています。

上記のサンプルのようにコンストラクタのパラメターとクラスのフィールドの名前が重複された場合

this変数を利用して区分けすることができます。

this変数は後で勉強するstaticメソッドでは使えません。

staticメソッド以外のメソッドは中でthis変数が隠されていて

this変数を使うことができます。

#終わりに

今回の記事は以上になります。

次回はJavaクラスの継承を学びましょう。

私たちの最新の記事はこちらで確認することができます。

ご覧いただきありがとうございます。

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?