오버로딩(Overloading) :
한 클래스 내에서 메소드의 매개변수 개수와 타입이 다르면 같은 이름으로 사용가능하다.
두가지 종류
메소드 오버로딩 , 생성자 오버로딩
메소드 오버로딩
- 메소드 중복 정의라고 부릅니다.
- 매개변수가 다르면 메소드의 이름이 같아도 됩니다.
- 한 개의 클래스나 상속 관계에 있는 클래스에 서로 매개 변수의 타입이나 개수가 다른 여러 개의 메소드가 같은 이름으로 작성되는 것을 말합니다.
- 동적 바인딩인 오버라이딩과 다르게 정적 바인딩입니다.
- 메인 메소드에서 다른 메소드를 호출할 때 편의를 위해서 고안되었습니다. .
1. 메소드 이름이 같아야한다
2. 매개변수의 개수 또는 타입이 달라야한다.
3. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.
※ 정적 바인딩(Static Binding)
- 실행할 메소드를 컴파일 시간(Compile Time)에 결정하는 것을 말합니다.
오버라이딩 : 재정의에 대한 이슈이고 상속에 대한 이슈이다.
구분 | 오버로딩 | 오버라이딩 |
메소드 이름 | 동일 | 동일 |
매겨변수, 타입 | 다름 | 동일 |
리턴 타입 | 상관없음 | 동일 |
메소드 오버라이딩 규칙
◎ 부모 타입 메소드 호출시 자식 객체 메소드가 실행가능하도록 선언해야 한다.
- Method Type : 이름, return Type, 매개변수는 동일해야 한다.
- Access Modifier : 자식의 메소드의 접근 제한자 범위가 부모와 같거나 더 넓어야 한다.
- Exception : 부모가 던진 type의 exception만 던질 수 있다.
<자식이 부모가 안한걸 더 하면, 다형성에서 문제가 되니 예외처리와 접근제한자 설정시 조심할 것.>
==========================
Animal a = new Dog();
컴파일시 : Animal.eat() 실행된다.
a.eat
런타임시 : Dog.eat() 실행된다.
==========================
반응형
'JAVA > OOP' 카테고리의 다른 글
OOP : Inheritance (상속) (0) | 2015.02.05 |
---|---|
OOP : Encapsulation (캡슐화) (0) | 2015.02.05 |
OOP : Polymorphism (상속/인터페이스에 의한 다형성) (0) | 2015.02.04 |
OOP : Abstraction (추상화) (0) | 2015.02.04 |
객체지향의 5원칙 (SOLID) (0) | 2015.02.04 |