1. 다형성을 구련하기 위한 'Override'. (예를들어서 설명.)
- 육군(Army), 해군(Navy), 공군(AirForce) 은 Unit이라는 클래스를 통하여 공통 속성을 정의하고 있다.
(공통속성 : 이름(멤버변수 및 getter, setter), 공격(attack()메소드).
- 같은 이름이지만 다른 동작을 수행해야 하난 필요성.
-> 모든 군대는 '공격'이라는 공통된 특성을 갖지만,
공격하는 방법은 육/해/공군이 서로 다르게 처리되어야 한다.
-------------------------------------------------------------------------------
2. 부모클래스가 갖고 있는 기능을 자식클래스가 재정의.
- 부모클래스에 정의된 것과 동일한 이름을 갖는 메소드를 자식클래스가 정의한 경우,
부모클래스의 기능은 자식에게 '가려진다'.
- 이렇게 부모의 기능을 재정의 하는 것을 메소드 'Override' 라 한다.
- 하나의 이름으로 다양한 효과 얻기.
-> 모든 자식클래스가 동일한 이름의 메소드를 갖게 되므로,
각 객체에 대하여 attack()이라는 이름을 사용하여 서로 다른 형태를 구현할 수 있게 된다.
-------------------------------------------------------------------------------
3. 어노테이션 주석을 명시해준다.
- '@Override' 가 어노테이션 주석이다.
- 매소드 오버라이드를 한다면 어노테이션 주석을 이용해 철자틀림을 방지할 수 있다.
1. 메소드 오버로드(Overload).
- 원칙적으로 하나의 클래스 안에는 동일한 이름의 메소드가 두 개 이상 존재할 수 없지만,
이를 가능하게 하는 예외적인 처리 기법.
-------------------------------------------------------------------------------
2. 이름이 동일한 메소드를 정의하기 위한 조건.
1) 메소드간의 파라미터가 서로 달라야한다.
-> 파라미터의 데이터 타입이 다르다.
(데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.)
-> 파라미터의 개수가 다르다.
-> 서로 다른 데이터 형을 갖는 파라미터들의 전달 순서가 다르다.
2) 리턴형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.
-------------------------------------------------------------------------------
3. 오버로드 예시.
1) 파라미터의 데이터형이 서로 다르기 떄문에 오버로드 '성립'.
public void user(int a){..}
public void user(long a){..}
2) 파라미터의 개수가 서로 다르기 때문에 오버로드 '성립'.
public void user(int a){..}
public void user(int a, int b){..}
3) 데이터 형의 전달 순서가 서로 다르기 때문에 오버로드 '성립'.
public void user(int a, String b){..}
public void user(String b, int a){..}
4) 지역변수가 다르더라도 데이터 형이 같으므로 오버로드 '성립불가'.
public void user(int a, String b){..}
puvlic void user(int b, String a){..}
-------------------------------------------------------------------------------
4. 생성자의 오버로드(Overload).
- 객체 생성 방법의 다양화.
- 생성자 역시 메소드의 한 종류이므로 Overload가 가능하다.
- 생성자를 Overload할 경우,
해당 클래스에 대해 '객체를 생성하는 방법'을 다양하게 준비할 수 있게 된다.
-------------------------------------------------------------------------------
5. this 키워드를 사용한 생성자 오버로드(Overload).
- this 키워드의 용법.
-> 메소드처럼 사용할 경우, 현재 클래스의 다른 생성자를 의미한다.
- this 키워드를 사용하여 생성자 Overload를 간결하게 처리하기.
-> 파라미터가 서로 다른 생성자들이 하나의 완전한 생성자를 호출하도록 하여,
데이터의 초기화를 한 곳에서 일괄적으로 처리하도록 구현할 수 있다.
-------------------------------------------------------------------------------
6. 초기화 생성자(파라미터를 갖는 생성자)와 기본 생성자를 모두 사용하고 싶다면,
오버로드(Overload)를 활용하면 된다.
※ 5. this 키워드를 사용한 생성자 오버로드(Overload) 예시 사진.