일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
27 | 28 | 29 | 30 | 31 |
- 클래스 변수
- 오버라이딩과 오버로딩 차이점
- static import문
- 운영체제의 분류
- this()
- 명예의전당(1)
- 인스턴스 메서드
- 오버로딩
- stateful widget 생명주기
- 운영체제란 무엇인가
- object클래스
- 객체 배열
- this()와 참조변수 this 차이점
- 프로그래머스
- webview_flutter
- stateless widget
- 조상의 생성자
- PriorityQueue
- static 메서드
- 호출스택
- 이것이코딩테스트다
- 참조형 매개변수
- 참조형 반환타입
- stateful widget
- 운영체제의 예
- 초기화 순서
- 기본형 매개변수
- FLUTTER
- 운영체제의 목적
- 운영체제의 구조
- Today
- Total
Coram Deo
ch 6-26~31 [객체지향 개념] - static 메서드, 인스턴스 메서드, 오버로딩 본문
ch 6-26 static 메서드와 인스턴스 메서드
인스턴스 메서드
- 인스턴스 생성 후, 참조변수.메서드이름()으로 호출
- 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용가능
static 메서드 (클래스 메서드)
- 객체 생성없이 '클래스이름.메서드이름()'으로 호출
- 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
- 메서드 내에서 인스턴스 변수(iv) 사용불가
* 인스턴스 메서드와 static 메서드의 가장 큰 차이는 "iv 사용여부"이다.
iv를 사용하려면 객체를 생성해야 하는데 static 메서드는 객체생성없이 사용하기 때문에 iv를 사용할 수 없다.
대신 매개변수를 통해 지역변수(lv)를 사용한다.
* 객체는 iv의 묶음이라고 말할 수 있다.
ch 6-28 static을 언제 붙여야 할까?
- 속성(멤버 변수) 중에서 공통 속성에 static을 붙인다.
예시) 카드의 속성 : 무늬, 숫자, 폭, 높이
무늬와 숫자는 카드마다 다르지만, 폭과 높이는 공통 속성이므로 static을 붙인다.
- 인스턴스 멤버(iv, im)을 사용하지 않는 메서드에 static을 붙인다.
ch 6-29 메서드 간의 호출과 참조
static 메서드는 인스턴스 변수(iv)를 사용할 수 없다.
static 메서드는 다른 static 메서드는 호출할 수 있지만, 인스턴스 메서드(im)는 호출할 수 없다.
인스턴스 메서드는 static 메서드를 호출할 수 있다.
* static 메서드가 인스턴스 멤버를 쓸 수 없는 이유 : static 메서드 호출시 객체(iv묶음)가 없을 수도 있어서.
ch 6-30 오버로딩(overloading)
한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것
조건 : 메서드 이름이 같아야 함.
매개변수 개수가 다르거나, 매개변수 타입이 달라야 함.
반환타입은 상관없음
메서드 이름은 거의 동사로 되어있음. 예시) add, println, round, random 등
그 이유는 메서드는 작업을 하는 명령문이기 때문임.
즉 메서드의 이름이 같다는 것은 하는 작업이 같다는 뜻.
오버로딩의 올바른 예 - 매개변수는 다르지만 같은 의미의 기능수행
만약 오버로딩한 메서드의 매개변수를 정확하게 입력하지 않았을 경우, ambiguous 하다고 한다.
// Ex) Overloading -> ambiguous
long add(int a, long b){...}
long add(long a, int b){...}
// 두 메서드 중 어떤 것을 호출해야할지 애매(ambiguous)하여 에러남
add(3, 3);
// 따라서 정확하게 입력해줘야 함.
add(3L, 3);
add(3, 3L);
밑의 코드에서 add 메서드가 먼저 호출된 후 println 메서드가 호출된다.
이해가 안되면 풀어서 써보기. int result에 mm.add(3L,3) 값을 대입한 후 result 출력하는 것과 같음.
system.out.println("mm.add(3, 3) 결과:" + mm.add(3L,3));
'자바의 정석' 카테고리의 다른 글
ch 6-32~41 [객체지향 개념] - 생성자, this()와 참조변수 this 차이점, 변수 초기화 (0) | 2022.11.03 |
---|---|
이클립스 git repository 경로 확인 방법 (0) | 2022.11.02 |
코포자를 위한 코딩 공부법 #3 (0) | 2022.10.31 |
코포자를 위한 코딩 공부법 #1 (0) | 2022.10.31 |
코포자를 위한 코딩 공부법 #2 (0) | 2022.10.31 |