スタティック変数

スタティックメソッドとは?通常メソッドとの違い。

スタティックメソッドとは、インスタンスを作成せずに呼ぶメソッドのこと。

Math.min(88,86);

みたいにクラス名で呼び出す。

通常メソットの場合は、インスタンスを作成して、通常メソッドを呼ぶ。

Song t2 = new Song();
t2.play();

のように、オブジェクトへの参照を格納した変数名で呼び出す。

スタティックメソッド内では、インスタンス変数は使用することが出来ない。

何故か?
利用しようとするインスタンス変数が、どのインスタンスに属するものかコンパイラでわからないためコンパイルが通らない。

public class Duck {
 private int size;
 public static void main (String[] args){
  System.out.println("Size of duck is " + size); //このsizeが、どのオブジェクトに属するのか不明となる。
 }
 public void setSize(int s){
  size =s;
 }
 public int getSize(){
  return size;
 }
}

インスタンス変数と同様に、通常メソッドもスタティックメソッド内での使用は出来ない。

スタティック変数とは?インスタンス変数との違い。

スタティック変数とは、クラスのすべてのインスタンスで値が同じになる変数のこと。

#インスタンス変数の例。インスタンス作成ごとにduckCount=1になる。
class Duck{
 int duckCount = 0;
 public Duck() {
  duckCount++;
 }
}

#スタティック変数の例
public class Duck{
 private int size;
 private static int duckcount=0;
 
 public Dcuk(){
  duckCount++:
 }
 public void setSize(int s){
  size = s;
 }
 public int getSize(){
  return size;
 }
}


GUI等で使用される。

そもそもなぜスタティックメソッド・変数が必要なのか?

変数、クラスを共通で使用したいか、各々で使用したいかがstaticを使用するしないかのポイント