java의 정석
java의 정석 2024-03-24
객체지향
java공부하면서 이해가 힘들었던 인스턴스 메소드, 인스턴스 변수, 클래스 메소드, 인스턴스 메소드에 대해 시원하게 이해시켜주었다.
처음엔 책부터 읽다가 유튜브로도 봤는데 두 개를 겸하니 확실히 이해가 되었다.
안스턴스 매소드 vs 클래스 메소드
간략하게 말하자면 클래스 메소드는 객채 생성 없이 호출이 가능하고 인스턴스 메소드는 객체를 생성해야만 호출이 가능하다.
(static이 붙으면 클래스 메소드, 변수)
iv는 인스턴스 변수 lv는 지역변수, im은 인스턴스 메소드
객체는 iv를 담고 있는 가방이라고 생각하면 편함
예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class MyMath2 {
// 밑은 iv 인스턴스 변수이다. 객체 생성시 변수에 값을 넣을 수 있음
long a, b;
long add() {
// 이 메소드내의 a와 b는 iv
return a + b;
// 객체 생성을 해야만 이 메소드를 호출가능
}
static long add(long a, long b) {
// 이 메소드내의 a와 b는 lv
return a + b;
// 객체 생성 없이 이 메소드를 호출가능
}
}
class MyMath1 {
public static void main(String[] args) {
System.out.println(MyMath2.add(200,100)); // 클래스 메소드 호출
MyMath2 mm = new MyMath2(); // 인스턴스 객체 생성
mm.a = 200;
mm.b = 100;
System.out.println(mm.add()); // 인스턴스 메소드 호출
}
}
인스턴스 메소드는 위와 같이 우선 객체를 만들고 그안의 변수 iv에 값을 넣어줘야만 print가 가능하다.
하지만 클래스 메소드는 객체 생성 없이 바로 그 안에 인자를 넣어 줄 수 있다.
인스턴스를 쓸 지 메소드를 쓸 지 그건 객체를 생성하고 그 안의 값을 지정의 여부를 판단하고 만들어야한다.
static 붙이는 예시
1
2
3
4
5
6
7
class Card {
String kind; // 무늬
int number; // 숫자
static int width = 100; // 폭
static int height = 250; // 높이
}
만약 의자라는 물건이 있다면 그 물건의 높이와 폭은 지정되어있고 무늬와 개수를 고를 수 있다고 가정할시,
인스턴스 변수 kind와 number은 개별 속성이고 클래스 변수 width와 height는 공통속성이다.
static메소드는 iv를 사용 할 수 없다. 객체가 생성되어있다는 보장이 없기때문에. 마찬가지로 im 호출도 불가능. 하지만 클래스메소드는 언제 어디서나 사용가능
This post is licensed under CC BY 4.0 by the author.