정적(static) 메소드와 정적 블록을 선언할 때 주의할 점은
객체가 없어도 실행된다는 특징 때문에,
이들 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다.
또한 객체 자신의 참조인 this 키워드도 사용이 불가능하다.
정적 메소드와 정적 블록에서 인스턴스 멤버를 사용하고 싶다면
객체를 먼저 생성하고 참조 변수로 접근해야 한다.
그래서 정적 메소드인 main()메소드도 객체 생성 없이 인스턴스 필드와 메소드를 바로 사용할 수 없었음.
따라서 객체를 생성한 후에 인스턴스 멤버에 접근해야 했던것임!
예시)
public class Car{
int speed;
void run(){ }
public static void main(String[] args){
speed = 60; // 틀림
run(); // 틀림
// 올바른 방법
Car myCar = new Car();
myCar.speed = 60;
myCar.run();
}
}
'공부 > JAVA' 카테고리의 다른 글
[JAVA] nextInt() in Scanner (0) | 2017.04.13 |
---|---|
[JAVA]매개변수의 수를 모를 경우 (0) | 2017.03.16 |
[JAVA]열거형 enum (0) | 2017.03.13 |
[JAVA]String 클래스와 메소드, 레퍼런스 개념 (0) | 2017.03.13 |