publicフィールド
日本語 | 公用フィールド |
英語 | public field |
ふりがな | ぱぶりっくふぃーるど |
フリガナ | パブリックフィールド |
publicで修飾されたフィールド。
「public 型 フィールド名;」のように、フィールドの宣言の先頭にpublicが付けられたフィールド。
publicフィールドは制限が全くなく、クラスの内外を問わずアクセスすることができる。
しかしそれは非常に危険なことである。フィールドに直接アクセスできるようになると、好き勝手に操作できるようになってしまう。たとえばString型のフィールドで「nullはあり得ない」ことになっており、メソッドがそれを前提に使用している場合、もしこのフィールドがpublicであれば外のクラスからnullを格納できてしまい、プログラムが正しく動作しなくなってしまう。
publicフィールドは、たとえばstatic finalフィールドのように「変更できない定数値」等にのみ使用し、通常のフィールドはprivateフィールドにしてクラスの内部で管理するべきである。このprivateフィールドに他のクラスからアクセスする場合にはgetter/setterを用意した方がよい。
「public 型 フィールド名;」のように、フィールドの宣言の先頭にpublicが付けられたフィールド。
publicフィールドは制限が全くなく、クラスの内外を問わずアクセスすることができる。
しかしそれは非常に危険なことである。フィールドに直接アクセスできるようになると、好き勝手に操作できるようになってしまう。たとえばString型のフィールドで「nullはあり得ない」ことになっており、メソッドがそれを前提に使用している場合、もしこのフィールドがpublicであれば外のクラスからnullを格納できてしまい、プログラムが正しく動作しなくなってしまう。
publicフィールドは、たとえばstatic finalフィールドのように「変更できない定数値」等にのみ使用し、通常のフィールドはprivateフィールドにしてクラスの内部で管理するべきである。このprivateフィールドに他のクラスからアクセスする場合にはgetter/setterを用意した方がよい。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
NormalClass normalClass = new NormalClass();
// publicフィールドを別クラスからアクセスします。
normalClass.data = 100;
System.out.println( normalClass.data );
// 100
// こうやって普通にアクセスできちゃいます。
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* publicフィールド。
*/
public int data;
}
public class Sample
{
public static void main( String[] args )
{
NormalClass normalClass = new NormalClass();
// publicフィールドを別クラスからアクセスします。
normalClass.data = 100;
System.out.println( normalClass.data );
// 100
// こうやって普通にアクセスできちゃいます。
}
}
/**
* フツーのクラス。
*/
class NormalClass
{
/**
* publicフィールド。
*/
public int data;
}
// Sample.java public class Sample { public static void main( String[] args ) { NormalClass normalClass = new NormalClass(); // publicフィールドを別クラスからアクセスします。 normalClass.data = 100; System.out.println( normalClass.data ); // 100 // こうやって普通にアクセスできちゃいます。 } } /** * フツーのクラス。 */ class NormalClass { /** * publicフィールド。 */ public int data; }