c23 [Java] 메소드 오버로딩, this 레퍼런스
본문 바로가기
[Java]

[Java] 메소드 오버로딩, this 레퍼런스

by Jarvis2304 2022. 12. 28.

▶ 메소드 형식

▷ 메소드

- 클래스의 멤버함수,

- 메소드는 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

댓글