2015年10月28日水曜日

フィールドとは

Javaでプログラミングしてるとメソッドという言葉とフィールドという言葉をよく聞きます。メソッドについてはすでに説明しましたが、フィールドとは何でしょうか。

たとえば次のようなコードを考えます。

public class Test2 {
 public static void main(String[] args){
String str = "Hello";

System.out.println(str);
 }
}

単に「Hello」と表示するだけのプログラムです。

このとき、このTest2クラスのなかのメインメソッドの「String str」はフィールドと呼ばれます。
フィールドの書式は次のようになっています。

[修飾子] データ型 変数名;

フィールドは継承されない

たとえば、あるクラスを継承するとします。
public class Test extends Hello{
public static void main(String args[]){
sayHello();
}
}

class Hello{
public static void sayHello(){
String str = "Hello";
System.out.println(str);
}
}

strには親クラス(Helloクラス)でHelloが代入されているので、子クラス(Testクラス)でこれを実行すると「Hello」と表示されます。

ですが、次のようにするとエラーになります。
public class Test extends Hello{
public static void main(String args[]){
sayHello(); //こっちは大丈夫。
System.out.println(str); //この str はエラーになります。
}
}

class Hello{
public static void sayHello(){
String str = "Hello";
System.out.println(str);
}
}
つまり、クラスを継承するとメソッドなどが使えるようになりますし、メソッドのオーバーロードやオーバーライドも可能になりますが、フィールドは子クラスに継承されないということです。