[자바의 정석 - 기초편] ch7-5~9 단일상속, Object클래스, 오버라이딩, 오버라이딩의 조건, 오버로딩 vs 오버라이딩
[자바의 정석 - 기초편] ch7-5~9 단일상속, Object클래스, 오버라이딩, 오버라이딩의 조건, 오버로딩 vs 오버라이딩
ch7-5,6 단일상속, Object클래스
ch7-5 단일 상속(Single Inheritance)
- java는 단일 상속만을 허용한다. (하나의 부모만 상속! // c++은 다중상속 허용)
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다. -> 다중상속의 효과
ch7-6 Object클래스 - 모든 클래스의 조상
- 부모가 없는 클래스(상속 받지 않는 클래스)는 자동적으로 Object 클래스를 상속받게 된다.
부모가 없을 때, 컴파일러가 "extends Objcet" 이 코드를 추가해준다.
- 모든 클래스는 Object클래스에 정의된 11개 메서드를 상속받는다.
ex) toString(), equals(Object obj), haschCode()... 9장에서 배울 거임. 일단은 toString()만 알아둬~
ch7-7~9 오버라이딩
ch7-7 메서드 오버라이딩(overriding)
- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것.
(선언부는 못 바꾸고 구현부(=내용)만 변경 가능)
우선 상속은 받는데, 조상 것이 아니라 오버라이딩한 자손 것이 호출됨!
오버라이딩 했다고 해서, 내용이 바뀌는 것도 아니고 상속 받지 않은 것도 아님!
상속받은 메서드 내용을 나에게 맞게 바꿀 수 있다는 게 뽀인트!
ch7-8 오버라이딩의 조건
1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
선언부 : (반환타입, 메서드 이름, 매개변수 목록)
2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
(같거나 적게)
ch7-9 오버로딩 vs. 오버라이딩
오버로딩(overloading)
- 기존에 없는 (이름이 같은)새로운 메서드를 정의하는 것(new)
_오버로딩은 상속과 관련X
_이름만 같은 메서드를 새로 만드는 것 : 오버로딩
오버라이딩(overridng)
- 상속받는 메서드의 내용을 변경하는 것(change, modify)
Parent클래스랑 Child클래스 부모 자식 관계.
1. 조상의 메서드를 자손에서 변경함 : 오버라이딩
2. 이름이 같은 메서드를 매개변수만 다르게 해서 새로 정의함 : 오버로딩
3. 그냥 메서드 새로 정의
4. 이름만 같은 메서드 새로 만들었음 매개변수만 다른 거. : 오버로딩
5. 중복정의, 에러.

확실하게 오버로딩과 오버라이딩의 차이를 알았다.