단단히

Cannot make a static reference to the non-static method mtd_JDBC() from the type DAO 본문

Java/오류

Cannot make a static reference to the non-static method mtd_JDBC() from the type DAO

이게아닌데 2022. 9. 21. 15:41

 

Cannot make a static reference to the non-static method 불러올 메서드명 from the type DAO

 


 

 

데이터 베이스와 연결을 확인하기 위해 메서드 호출을 할 때 발생했다.

오류를 해석해보니 아래와 같았다.

DAO 유형에서 비정적 메서드 mtd_JDBC()에 대한 정적 참조를 만들 수 없습니다.

 

 

Static으로 선언된 메소드에서는 Static으로 선언되지 않은(비정적) 메서드를 불러오지 못한다.

 

비정적 메소드는 특정 클래스의 객체가 생성 될 때 만들어지며, 해당 객체 안에서만 사용될 수 있다.

 

Static(정적) 메서드와 비정적 메서드는 서로 다른 메모리 영역에서 생성되어 동작한다.

정적 메서드는 정적 데이터 영역에서 생성되며 만들어진 메서드는

프로그램을 시작부터 종료할 때까지 유지된다.

비정적 메서드는 스택 메모리로 생성된다.

그래서 객체가 생성되고 소멸할 때 같이 소멸한다. 

 

Static 메소드는 프로그램이 실행될 때 먼저 컴파일된다.

그렇기에 static이 아닌 메서드는 정의되기전이기에 참조하지 못한다.

 

즉, 아래와 같은 경우 오류가난다.

 

public static void main(String[] args) {
	mtd();
}
    
public void mtd() {
		...
	}

 

 

 


 

Static로 정의된 메서드에 Static 키워드를 지워주거나

Static 키워드가 없는 메서드에 Static 키워드를 적어주면 된다,

 

 

public static void main(String[] args) {
	mtd();
}
public static void mtd() {
	...	
}

 

public void mtd_Page() {
	mtd();
}
public void mtd() {
	...	
}

 

 

 


 

Static 메서드는 실행과 동시에 정의된다. 때문에 Static 메서드끼리 호출만 가능하다.

 

Static 메서드는 정적 메모리에 저장되며 비정적 메서드는 스택 메모리에 저장된다.

Comments