이번 시간에는 "Java_Static메소드, Instance메소드"에 대해 다뤄보겠습니다.
- 클래스 - 인스턴스(객체)
붕어빵틀 - 붕어빵
자동차틀 - 소나타, 그랜져,...
- 스태틱메소드 = 클래스메소드 = 정적메소드
- static이 붙어있는 메소드
- 인스턴스(객체)를 사용하지 않아도 사용가능
- 인스턴스 멤버를 사용할수없음(=클래스 인스턴스 정보는 접근이 불가능하다., 스태틱메소드 안에서는 객체(인스턴스)변수 접근이 불가능하다.)
- 클래스 자체에 바인딩 된 메소드(인스턴스에서 호출 불가)
- 클래스 자체를 암묵적인 첫번째 파라미터로 넘겨받음
- 함수 안에서 클래스 자체에서 들고 있는 모든 정보에 접근이 가능(= 메소드 내에서 클래스 상태를 변경할 수 있으며 이는 현재 메모리에 올라가 있는 해당 클래스의 모든 인스턴스에 영향을 줄 수 있다. 그래서 클래스 메소드 생성시 매우 주의해야함.)
- 사용예시(Math 클래스의 pow(), random(), max(). Min()을 이용할 때 클래스명.함수명()하고 호출)
int x, y;
Math.pow()
- Non스태틱메소드 = 인스턴스메소드 = 일반메소드
- static이 안 붙어있다.
- 항상 인스턴스(객체)에 포함되어 있으며, 인스턴스(객체)를 정의해야 호출할 수 있다.
- 멤버변수 중 모든 인스턴스에 공통 사용하는 메소드
- 메소드 작업 수행시 인스턴트 변수를 필요로 하는 메소드
- 사용예시(스캐너 클래스를 선언하고 생성한 뒤 메소드 사용시 객체.함수명()하고 호출)
int n;
Scanner scan = new Scanner(System.in);
n = scan.nextInt();