자바의 정석 가자!

[자바의 정석 - 기초편] ch7-5~9 단일상속, Object클래스, 오버라이딩, 오버라이딩의 조건, 오버로딩 vs 오버라이딩

'쪼리' 2022. 11. 6. 23:43

[자바의 정석 - 기초편] 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()만 알아둬~

모든 클래스의 조상 - Object 클래스

ch7-7~9 오버라이딩

ch7-7 메서드 오버라이딩(overriding)

- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것.

(선언부는 못 바꾸고 구현부(=내용)만 변경 가능)

 

오버라이딩_조상의 메서드를 자신에 맞게 바꿈

우선 상속은 받는데, 조상 것이 아니라 오버라이딩한 자손 것이 호출됨!

오버라이딩 했다고 해서, 내용이 바뀌는 것도 아니고 상속 받지 않은 것도 아님!

상속받은 메서드 내용을 나에게 맞게 바꿀 수 있다는 게 뽀인트!

 

ch7-8 오버라이딩의 조건

1. 선언부가 조상 클래스의 메서드와 일치해야 한다.

선언부 : (반환타입, 메서드 이름, 매개변수 목록)

오버라이딩 조건_선언부! 조상 클래스의 메서드와 일치!

2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

 

3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.

(같거나 적게)

 

오버라이딩 조건_예외 조상클래스보다 많을 수 없음.

 

ch7-9 오버로딩 vs. 오버라이딩

오버로딩(overloading)

- 기존에 없는 (이름이 같은)새로운 메서드를 정의하는 것(new)

_오버로딩은 상속과 관련X

_이름만 같은 메서드를 새로 만드는 것 : 오버로딩

 

오버라이딩(overridng) 

- 상속받는 메서드의 내용을 변경하는 것(change, modify) 

 

오버로딩 vs 오버라이딩

 

Parent클래스랑 Child클래스 부모 자식 관계.

1. 조상의 메서드를 자손에서 변경함 : 오버라이딩

2. 이름이 같은 메서드를 매개변수만 다르게 해서 새로 정의함 : 오버로딩

3. 그냥 메서드 새로 정의

4. 이름만 같은 메서드 새로 만들었음 매개변수만 다른 거. : 오버로딩

5. 중복정의, 에러.

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