본문 바로가기

Language/Java

Chap07_04 Method 와 Method overloading

1. 정의

클래스의 기능을 표현한 것.

해당 클래스를 사용한 객체는 모두 사용할 수 있다.

해당 매소드를 재정의 해서 사용도 가능하다.

2. 선언

일반 매소드랑 똑같음. 선언되는 위치가 클래스 안쪽 일 뿐이다. 

public class BlackBox{
// 입력 반환 모두 없는 매소드 > 호출만 하면 됨.
    void autoReport() {
        if (canAutoReport) {
            System.out.println("충돌이 감지되어 자동으로 신고합니다.");
        }
        else {
            System.out.println("자동 신고 기능이 지원되지 않습니다.");
        }
    }

//입력은 필요하나 반환은 없는 매소드 
    void insertMemoryCard(int capacity) {
        System.out.println("메모리 카드가 삽입되었습니다.");
        System.out.println("용량은 " + capacity + "GB 입니다.");
    }
    
//int 입력, int 반환 매소드     
    int getVideoFileCount (int type) {
        if (type == 1) {
            return 9;
        } else if (type == 2) {
            return 10;
        }

        return 10;
    }

// 입력은 있으나 반환은 없는 매소드 
    void record (boolean showDateTime, boolean showSpeed, int min) {
        System.out.println("녹화를 시작합니다.");
        if(showDateTime) {
            System.out.println("영상에 날짜정보가 표시됩니다.");
        }
        if (showSpeed) {
            System.out.println("영상의 속도정보가 표시됩니다.");
        }
        System.out.println("영상은" + min + "분 단위로 기록됩니다. ");
    }
}

3. 호출 

// canAutoreport라는 변수가 true, false 일 때 출력하는 값이 다름
b1.autoReport();

//반환 값을 변수에 집어 넣음
int fileCount = b1.getVideoFileCount(1);

4. 재정의 (오버로딩)

인스턴스 변수는 클래스 내에서 재정의 가능

//원래 매소드
void record (boolean showDateTime, boolean showSpeed, int min) {
    System.out.println("녹화를 시작합니다.");
    if(showDateTime) {
        System.out.println("영상에 날짜정보가 표시됩니다.");
    }
    if (showSpeed) {
        System.out.println("영상의 속도정보가 표시됩니다.");
    }
    System.out.println("영상은" + min + "분 단위로 기록됩니다. ");
}

//재정의된 매소드 : 인수 값이 아무것도 없다면, 인수에 true, true, 5가 들어가는 걸로 하겠다.
void record () {
    record(true,true,5);
}

5. Class Method (클래스 매소드)

1. 정의

모든 객체에 똑같이 적용되는 매소드 

객체 생성 없이도 클래스에 접근해 바로 사용 가능

Class 매소드에서는 Class 변수만 사용 가능! 

인스턴스 변수는 객체가 만들어져야 생기는 변수임, 객체 생성 없이도 쓸 수 있어야 하는 클래스 매소드에선 사용 불가능. 

 

2. 예시

public class BlackBox {
    static void callServiceCenter() {
        System.out.println("서비스 센터(1588-0000)로 연결합니다.");

        //Class 변수는 Class 매소드에서 바로 사용 가능
        //인스턴스 변수는 객체가 만들어져야 생기는 변수임으로 클래스 매소드에서 사용 불가능
        // modelName = "test";
        canAutoReport = false;
    }
}

클래스로 바로 접근 

BlackBox.callServiceCenter();

'Language > Java' 카테고리의 다른 글

Chap07_06 Setter & Getter  (0) 2023.01.26
Chap07_05 Constructor 와 this  (0) 2023.01.26
Chap07_03 Class Variable(클래스 변수)  (0) 2023.01.26
Chap07_02 Instance Variable(인스턴스 변수)  (0) 2023.01.26
Chap07_01 Class  (0) 2023.01.26