본문 바로가기

JAVA/OOP

OOP : Overlading (오버로딩 - 다형성) & Overriding(재정의 - 상속)

오버로딩(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