public
すべてのクラスに公開
外から書き換えられる
private
非公開
外から書き換えられなし、見ることもできない
例えば下記の場合、counterで生成したインスタンスの数を数える。
counterは見えないが、getCounterでGETすることはできる。
まず、外から操作をさせない。できるべきものでもない、から。
それによってバグが起きてしまうかもしれないから。
もう1つの理由。
別に、publicでも動く。
でも、複数人で1つのものをつくっていたりすると、
例えば、
普通、書き換えることはないものでも、
publicになっていたら、そのcounterが外から書き換えることのあるものだと勘違いするかもしれない。
ある意味親切にするために、わかりやすくするために、privateはprivate、publicはpublicでかく。
すべてのクラスに公開
外から書き換えられる
private
非公開
外から書き換えられなし、見ることもできない
例えば下記の場合、counterで生成したインスタンスの数を数える。
counterは見えないが、getCounterでGETすることはできる。
Rectangle.java
public class Rectangle {
int width;
int height;
private static int counter = 0;
int number;
public Rectangle(){
setSize(10,20);
number = counter;
counter++;
}
public Rectangle(int width,int height){
setSize(width,height);
number = counter;
counter++;
}
public void setSize(int width, int height){
this.width = width;
this.height = height;
}
public void printSize(){
System.out.println("Rectangle(" + width + "," + height +")");
}
public static int getCounter(){
return counter;
}
}
まず、外から操作をさせない。できるべきものでもない、から。
それによってバグが起きてしまうかもしれないから。
もう1つの理由。
別に、publicでも動く。
でも、複数人で1つのものをつくっていたりすると、
例えば、
普通、書き換えることはないものでも、
publicになっていたら、そのcounterが外から書き換えることのあるものだと勘違いするかもしれない。
ある意味親切にするために、わかりやすくするために、privateはprivate、publicはpublicでかく。