Cat 클래스
getCount => static 메소드로
package static_method;
public class App {
public static void main(String[] args) {
// 스태틱 메소드는 클래스이름.메소드
System.out.println("고양이 몇 마리 ? :" + Cat.getCount());
final String CAT_COUNT = "고양이 숫자: %d\n";
String catCount = String.format(CAT_COUNT, Cat.getCount());
System.out.println(catCount);
Cat cat1 = new Cat("마틸다");
Cat cat2 = new Cat("마틸다");
Cat cat3 = new Cat("울버린");
System.out.println(cat1);
System.out.println(cat2);
System.out.println(cat3);
System.out.println(Cat.FOOD);
System.out.println("고양이 몇 마리 ? : " + Cat.getCount());
catCount = String.format(CAT_COUNT, Cat.getCount());
System.out.println(catCount);
}
}
package static_method;
public class Cat {
private String name; // 인스턴스 변수 => 객체를 생성해야 사용가능
public static final String FOOD = "고양이 사료 ";
private static int count = 0;
public Cat(String name) {
this.name = name;
count++; // 객체 생성시 count 증가
}
public static int getCount() { // 스테틱 메소드는 인스턴스 변수 사용불가
// String n = name; 인스턴스 변수 사용불가
return count;
}
@Override
public String toString() {
return String.format("Cat id: %d, name: %s", id, name);
} // 이름만 다르지 printf랑 똑같아요 id는 %d에 들어가고 name에는 %s가 들어감
}