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()