본문 바로가기

Programming/JAVA

overloading & overriding 에서 조심해야 할 것

* 오버로딩
* 같은 클래스 내에서 메소드 명이 같고 다음이 적용될 때

1. 리턴타입이 달라도 되나 다음의 2~3번 사항 중 한가지가 같이 적용이 되어야 한다.

2. 매개변수의 데이터 타입이 다를 수 있다.

3. 매개변수의 갯수가 다를 수 있다.

* 오버라이딩
* 다른 클래스에게서 상속 받았을 때 메소드명이 같을때
1. 리턴타입이 다르면 안된다.
2. 매개변수의 수가 다르면 안된다.
3. 매개변수의 데이터 타입이 다르면 안된다.
4. 접근제한자는 다를 수 있다.(public, private 등)


class OverA {
    void show(String str) {
        System.out.println("상위클래스의 메소드 show(String str) 수행 " + str);
    }

    void show(String str, int intg){
     System.out.println("오버로딩 구현 : " + str + " 정수 " + intg);   
    }
    // 같은 클래스 내에 매개 변수의 수만 다른 같은 메소드명을 가지는 메소드가 2개 있다. 결론 오버로딩
    // 파란색은 오버라이딩을 나타내는 부분이다.
}

class SubOverA extends OverA {
    void show() {
        System.out.println("하위클래스의 메소드 show() 수행");
    }
    void show(String str){
     System.out.println("오버라이딩 구현" + str);
    }

   
}
     
public class OverrideExam1 {
    public static void main(String args[]) {
        SubOverA over = new SubOverA();
        over.show("IT KOREA");
        over.show("IT KOREA", 24);
        over.show();
       
    }
}