인스턴스가 아닌 클래스에 속하며 클래스의 변수, 메서드 등을 공유하는데 사용된다.
public class Person { // 멤버변수(속성)
String name;
int IQ;
int str;
private static final String GUDOC = "큰돌의 터전";
// constructor
public Person(String name, int IQ, int str){
this.name = name;
this.IQ = IQ;
this.str = str;
}
public Person(){
this.name = "alanwalker"; this.IQ = 100;
this.str = 100;
}
// 메서드
public void levelup(){
this.IQ = this.IQ + 1;
this.str = this.str + 1;
System.out.println(this.name + "의 지능과 힘이 증가했습니다!
" + this.IQ + " / " + this.str);
}
// public void talk(Person a, Person b){
// System.out.println(a.name + " & " + b.name + "이 대화를 시작했다!");
// }
private static void talk(Person a, Person b){
System.out.println(a.name + " & " + b.name + "이 대화를 시작했다!");
}
public static void main(String[] args) {
Person a = new Person(); // 객체 >> 인스턴스 a.levelup();
Person b; // 객체
b = new Person("큰돌", 1000, 1); // 인스턴스 b.levelup();
Person.talk(a, b);
System.out.println(Person.GUDOC);
}
}
Method area
메모리 영역에 할당이 되며 프로그램이 종료 될 때까지 가비지컬렉터에 의해 메모리가 회수되지 않기 때문에 만약 클래스가 객체로 쓰이지 않는다면 메모리 낭비를 불러올 수 있다.