2024. 1. 23. 23:56ㆍJAVA
정적 메서드는 객체 생성없이 클래스에 있는 메서드를 바로 호출할 수 있다는 장점이 있음.
하지만 정적 메서드에도 사용 제약이 존재함.( = 아무 때나 사용할 수 있는 거 아님)
정적 메서드 사용법
static 메서드는 static 만 사용할 수 있음.
ㄴ 머선 소리지??
- 클래스 내부의 기능을 사용할 때, 정적 메서드는 static이 붙은 메서드나 정적 변수만 사용할 수 있음.
- 클래스 내부의 기능을 사용할 때, 정적 메서드는 인스턴스 변수나, 인스턴스 메서드를 사용할 수 없음.
반대로, 모든 곳에서 static 을 호출할 수 있음
ㄴ ???
- 정적 메서드는 공용 기능임. 따라서 접근 제어자만 허락한다면 클래스를 통해 모든 곳에서 static 호출 가능
설명을.. 봐도 모르겠네. 코드 쳐보면서 이해 해보자!!
public class ConvertData {
private int instanceValue;
private static int staticValue;
public static void callStatic() {
// instanceValue++; // 인스턴스 변수 접근. 컴파일 에러
// instanceMethod(); // 인스턴스 메서드 접근. 컴파일 에러
staticValue++; // 정적변수 접근
staticMethod(); // 정적 메서드 접근
}
private void instanceMethod() {
System.out.println("instanceValue = " + instanceValue);
}
private static void staticMethod() {
System.out.println("staticValue = " + staticValue);
}
}
아. 따라 쳐 보니까 이해가 좀 간다.
인스턴스 변수, 인스턴스 메서드는 인스턴스를 생성해야만 사용할 수 있다.
이들은 객체의 생성, 소멸과 생명주기를 함께 한다.
반면, 정적 변수, 정적 메서드는 프로그램을 실행할 때 클래스 파일 정보를 읽어들이면서 생성된다.
즉. 정적 변수, 메서드의 생성 시기가 앞설 수 밖에 없다.
정적 변수, 메서드는 존재하나, 인스턴스 변수, 메서드가 존재하지 않을 가능성이 매우 높으므로,
static 메서드는 생명 주기를 함께 하는 static 변수, static 메서드로의 접근은 허용하고,
있는지 없는지도 모르는 인스턴스 변수, 메서드로의 접근은 허용되지 않는다. (왜? 없는 물건 쓸 수 없잖아)
'JAVA' 카테고리의 다른 글
| 상속_특징 (0) | 2024.01.28 |
|---|---|
| 상속 (0) | 2024.01.28 |
| static_메서드1 (0) | 2024.01.23 |
| static_static 변수 (0) | 2024.01.22 |
| 자료구조_스택&큐 (0) | 2024.01.22 |