すくすくすくらっぷ

とりあえずすくらっぷ

Javaのクラスについて

Javaのクラスについての勉強をしてみた。

なぜクラスがあるのかイマイチ理解しないままだったけど、

とほほのJava入門


を見て理解できるようになった。


そこで、このサイトを参考に、ちょっとひねってMusicianクラスとして作ってみることにした。


MusicianTest.java

class Musician {
	String name;    //名前
	int age;        //年齢
	String country; //出身国
	String part;    //楽器
}

public class MusicianTest {
	
	public static void main(String[] args){
		
		Musician clapton = new Musician(); //claptonインスタンス
		
		//claptonの情報
		clapton.name = "Eric Clapton";
		clapton.age = 71;
		clapton.country = "United Kingdom";
		clapton.part = "Guitar";

		Musician akkerman = new Musician(); //akkermanインスタンス
		
		//akkermanの情報
		akkerman.name = "Jan Akkerman";
		akkerman.age = 69;
		akkerman.country = "Nederland";
		akkerman.part = "Guitar";
		
		//情報の表示
		System.out.println("Name: "+clapton.name+", Country: "+clapton.country+", Age: "+clapton.age+", Part: "+clapton.part);
		System.out.println("Name: "+akkerman.name+", Country: "+akkerman.country+", Age: "+akkerman.age+", Part: "+akkerman.part);
	}
}
Name: Eric Clapton, Country: United Kingdom, Age: 71, Part: Guitar
Name: Jan Akkerman, Country: Nederland, Age: 69, Part: Guitar

となる。

上のままだと初期化が面倒になるため、インスタンス生成の際に初期化を行うコンストラクタというものを使う。

すると、

class Musician {
	String name;    //名前
	int age;        //年齢
	String country; //出身国
	String part;    //楽器
	
	//コンストラクタ
	Musician(String name, int age, String country, String part) {
		this.name = name;
		this.age = age;
		this.country = country;
		this.part = part;
	}
	
}

public class MusicianTest {
	
	public static void main(String[] args){
		
		//claptonインスタンス
		Musician clapton = new Musician("Eric Clapton", 71, "United Kingdom", "Guitar");
		
		//akkermanインスタンス
		Musician akkerman = new Musician("Jan Akkerman", 69, "Nederland", "Guitar"); //akkermanインスタンス
		
		//情報の表示
		System.out.println("Name: "+clapton.name+", Country: "+clapton.country+", Age: "+clapton.age+", Part: "+clapton.part);
		System.out.println("Name: "+akkerman.name+", Country: "+akkerman.country+", Age: "+akkerman.age+", Part: "+akkerman.part);
	}
}

スッキリした。

さらに、Musicianクラスに情報を表示するメソッドGetInfo()を追加すると、

class Musician {
	String name;    //名前
	int age;        //年齢
	String country; //出身国
	String part;    //楽器
	
	//コンストラクタ
	Musician(String name, int age, String country, String part) {
		this.name = name;
		this.age = age;
		this.country = country;
		this.part = part;
	}
	
	void getInfo() {
		System.out.println("Name: "+this.name+", Country: "+this.country+", Age: "+this.age+", Part: "+this.part);
	}
}

public class MusicianTest {
	
	public static void main(String[] args){
		
		//claptonインスタンス
		Musician clapton = new Musician("Eric Clapton", 71, "United Kingdom", "Guitar");
		
		//akkermanインスタンス
		Musician akkerman = new Musician("Jan Akkerman", 69, "Nederland", "Guitar"); //akkermanインスタンス
		
		//情報の表示
		clapton.getInfo();
		akkerman.getInfo();
	}
}

だいぶスッキリした。


ついでにPythonでも書いてみるとこんな感じ

MusicianTest.py

#coding: utf-8

class Musician:

    #コンストラクタ
    def __init__(self, name, age, country, part):
        self.name = name       #名前
        self.age = age         #年齢
        self.country = country #出身国
        self.part = part;      #楽器

    def getInfo(self):
        print ("Name: %s, Country: %s, Age: %d, Part: %s"
               %(self.name, self.country, self.age, self.part))


if __name__ == "__main__":

    #claptonインスタンス
    clapton = Musician("Eric Clapton", 71, "United Kingdom", "Guitar")

    #akkermanインスタンス
    akkerman = Musician("Jan Akkerman", 69, "Nederland", "Guitar")

    #情報の表示
    clapton.getInfo()
    akkerman.getInfo()