반응형
남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
인스턴스 메서드
- 인스턴스 생성 후 , '참조변수.메서드()' 으로 호출
- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용 가능
static 메서드 (클래스 메서드)
- 객체 생성 없이 '클래스이름.메서드이름()' 으로 호출
- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용 불가
ex) Math.random(); , Math.round(); // 객체생성 없이 클래스이름.메서드이름으로 사용
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class MyMathTest2 {
public static void main (String args[]) {
System.out.println(MyMath2.add(200L, 100L)); //클래스 메서드 호출
MyMath2 mm = new MyMath2(); //객체생성
mm.a = 200L;
mm.b = 100L;
System.out.println(mm.add()); // 인스턴스메서드 호출
}
}
class MyMath2{
long a,b; //인스턴스 변수
long add() { // 인스턴스 메서드
return a+b;
}
static long add(long a, long b) { // 클래스 메서드
return a+b; // long a, long b 는 지역변수
}
}
|
cs |
출력
300
300
static 은 언제 붙여야 할까?
- 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다.
- 인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 static을 붙인다.
메서드 간의 호출과 참조
- static 메서드는 인스턴스 변수(iv) 사용할 수 없다.
- static 메서드는 인스턴스 메서드(im)를 호출할 수 없다.
+ static 메서드는 static 메서드를 호출 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class TestClass2 {
int iv; //인스턴스 변수
static int cv; // 클래스 변수
void instanceMethod() { // 인스턴스 메서드
System.out.println(iv); // 인스턴스 변수 사용 가능
System.out.println(cv); // 클래스 변수 사용 가능
}
static void staticMethod() { // 클래스 메서드 (static 메서드)
System.out.println(iv); // 에러 클래스 메서드에서는 인스턴스 변수 사용 불가
System.out.println(cv); // 클래스 변수 사용 가능
}
}
|
cs |
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 오버로딩 ) (0) | 2020.07.09 |
---|---|
자바의 정석 기초 ( 생성자 (constructor)/ 생성자 규칙 / 기본 생성자 (default constructor ) / 매개변수가 있는 생성자 ) (0) | 2020.07.09 |
자바의 정석 기초 ( 메서드 / 메서드 호출 / return 문 / 반환값 ) (0) | 2020.07.08 |
자바의 정석 기초 ( 클래스 정의 / 클래스 선언 위치에 따른 변수 종류 / 클래스 변수 / 인스턴스 변수 / 지역변수 ) (0) | 2020.07.07 |
자바의 정석 기초 ( 객체의 생성 / 객체의 사용 / 객체 배열 ) (0) | 2020.07.06 |
댓글