non-static 멤버와 static 멤버의 특징
1. 눈은 각 사람마다 하나씩 있고, 공기는 오직 하나만 있어서 모든 사람이 공유한다는 차이점이 있다. 여기서 눈은 사람이라는 객체의 non-static 멤버(=인스턴스 멤버)이며, 공기는 static 멤버(클래스 멤버) 이다.
2. static 멤버는 클래스당 하나씩 생긴다고 해서 클래스 멤버라고도 부르며, non-static멤버는 각 객체마다 하나식 생긴다고 해서 인스턴스 멤버라고도 불부른다.
3. static 메소드는 객체가 생성되지 않은 상황에서도 사용이 가능하므로 객체를 생성하지 않고서는 직접 인스턴스 변수, 인스턴스 메소드 등을 사용할 수 없다. 그러나, 인스턴스 메소드는 static멤버들을 모두 사용할 수 있다.
4. public static void main(String args[]) 인 main 메소드도 static 메소드이고 객체를 생성해야만 사용할 수 있는 인스턴스 변수 및 인스턴스 메소드의 특성 때문에 객체를 생성되지 않은 상황에서 클래스 이름을 이용하여 인스턴스 변수 및 인스턴스 메소드를 사용할 수 없다고 하겠다. 사용하려면, 객체를 우선 생성한 후 인스턴스 변수와 인스턴스 메소드를 사용하여야 한다. 따라서 main 메소드에서 인스턴스 변수와 인스턴스 메소드 사용은 객체 생성이 필수적이다.
5. static 메소드에서는 this 키워드를 사용할 수 없다. static 메소드는 객체가 생성되지 않은 상황에서도 클래스 이름을 이용하여 호출이 가능하기 때문에 호출 당시 실행 중인 객체를 가리키는 this 연산자를 사용할 수 없다. 따라서, public static void main(String args[]) 인 main 메소드도 this 연산자 사용이 불가능 하다.
명품 JAVA Programming 황기태 저
인스턴스 변수와 지역변수의 차이점
1. 인스턴스 변수는 클래스 내에서 선언됩니다. 메소드 내에서 선언되는 것이 아닙니다.
class Horse {
private double height = 15.2;
private String breed;
public int method() { .... }
}
2. 지역 변수(local variable)는 메소드 내에서 선언됩니다.
class AddThing {
int a;
int b = 12;
public int add() {
int total = a + b;
return total;
}
}
3. 지역변수는 사용하기 전에 반드시 초기화해야 합니다.
class Foo {
public void go() {
int x;
int z = x + 3; // 컴파일 되지 않습니다.
}
오류메시지 : variable x miht not have been initialized.
'JAVA Programming' 카테고리의 다른 글
protected 접근 제한자 (0) | 2015.04.27 |
---|---|
어노테이션(Annotation) #2 (0) | 2015.04.23 |
어노테이션(Annotation) #1 (0) | 2015.04.23 |
Getter와 Setter (0) | 2015.04.23 |
패키지와 접근 제한자 (0) | 2015.04.23 |