▶ 메소드 형식
▷ 메소드
- 클래스의 멤버함수,
- 메소드는 C/C++의 함수와 동일
- 자바의 모든 메소드는 반드시 클래스 안에 있어야함 (캡슐화 원칙)
▷ 메소드 구성 형식
● 접근 지정자 - public, private, protected, 디폴트(접근 지정자를 생략하는 경우)
● 리턴 타입 - 메소드가 반환하는 값의 데이터 타입
▶ 인자 전달
- (1) 기본 타입의 값 전달, (2) 객체 혹은 배열 전달
(1) 기본 타입의 값을 전달하는 경우
- 값이 복사되어 전달
- 메소드의 매개변수가 변경되어도 호출한 실인자 값은 변경되지 않음
(2) 객체 혹은 배열을 전달하는 경우
- 객체나 배열의 레퍼런스만 전달 (객체 혹은 배열이 통째로 복사되어 전달되는 것이 아님)
- 메소드의 매개변수와 호출한 실인자가 객체나 배열을 공유하게 됨
● 객체가 전달되는 경우
● 배열이 전달되는 경우
- 매개변수에 배열의 레퍼런스만 전달
- 매개변수가 실인자의 배열을 공유
- 배열이 통째로 전달되지 않음
예제) 배열의 전달
▶ 메소드 오버로딩
▷ 오버로딩 (Overloading)
● 한 클래스 내에서 두 개 이상의 이름이 같은 메소드 작성
- 메소드 이름이 동일해야함
- 매개변수의 개수가 서로 다르거나, 매개변수의 타입이 서로 달라야함
- 리턴 타입은 오버로딩과 관련 없음
▷ 오버로딩된 메소드 호출
▶ this 레퍼런스
- 객체 자신에 대한 레퍼런스
- 현재 실행되는 메소드가 속한 객체에 대한 레퍼런스
- 컴파일러에 의해 자동 선언 (별도로 선언할 필요 없음)
▷ this가 필요한 경우
(1) 객체의 멤버 변수와 메소드 변수의 이름이 같은 경우
(2) 메소드가 객체 자신의 레퍼런스를 반환할 때
(3) 다른 메소드 호출 시, 객체 자신의 레퍼런스를 전달할 때
예제) (1), (2)
예제) (3)
class ThisSample{
private int value;
public ThisSample(int value) {
this.value = value;
}
public void printValue() {
System.out.println("Value: " + this.value);
}
public void callAnotherMethod() {
// 다른 메소드 호출 시, 객체 자신의 레퍼런스를 전달할 때 'this' 사용
anotherMethod(this);
}
private void anotherMethod(ThisSample obj) {
// 전달받은 객체의 값을 출력
obj.printValue();
}
public static void main(String[] args) {
ThisSample exampleObj = new ThisSample(10);
exampleObj.printValue(); // 출력: Value: 10
exampleObj.callAnotherMethod(); // 출력: Value: 10
}
}
▷ this 대한 이해
▷this()
- this()는 클래스 내의 다른 생성자를 호출할 때 사용하는 자바 코드
- 생성자 내에서만 사용 가능
- 반드시 생성자 코드의 제일 처음에 수행
예제) this()로 다른 생성자 호출
▷ 객체의 치환
- 객체의 치환은 객체가 복사되는 것이 아니며 레퍼런스가 복사되는 것
'[Java]' 카테고리의 다른 글
[Java] 접근 지정자 (0) | 2022.12.28 |
---|---|
[Java] 생성자, 가비지 (0) | 2022.12.28 |
[Java] 클래스와 객체 (캡슐화) (0) | 2022.12.28 |
[Java] 객체 지향 (0) | 2022.12.27 |
[Java] 예외 처리 (0) | 2022.12.27 |
댓글