항해 12일차 TIL

Colleen·2023년 1월 26일
1
post-custom-banner


자바언어를 배우면서 매번 overload 와 override의 차이에 대해서 강조하시던 강사님과 교수님이 생각난다. 분명 그때 잘 배웠던 것 같은데 왜 ... 막상 설명하려면 기억이 나지 않는 걸까?
아직 내것이 되지 않아서 이겠지?

상속

기존의 클래스로 새로운 클래스를 만드는 것을 이야기 한다. 기존에 있던 클래스가 부모, 새로 생성 되는 클래스가 자식 관계가 된다. (다만 부모는 자식을 모른다. 자식만 부모의 존재를 안다.)
이 두관계는 extends라는 키워드로 알수 있다.

포함관계

클래스 멤버로 참조 변수를 선언하는 것을 말한다. 작은 단위의 클래스를 만들고 이 들을 조합해서 클래스를 구성하는 것이다

class Engine {}
class Door {}
class Car {
    Engine engine = new Engine();
    Door[] doors = new Door[4]; // 자동차 문 4개, Door 클래스 하나로 문 4개 생성
}

관계결정

상속관계: A는 B이다. (A is B)
포함관계: A는 B를 가지고 있다. (A has B)

단일 상속

자바는 부모를 하나만 지정할 수 있다. 가장 비중이 높은 클래스를 상속관계로 놓고 남은 관계는 포함 관계로 넘어가는 방식으로 풀어 낼수 있다. 다중 상속을 하게 되는 경우 Diamond Problem이 발생할 수 있다.

오버라이딩(Overriding)

상속 받은 부모의 메소드를 자신에게 맞추어 변형하는 것을 말한다.

오버라이딩의 조건
선언부가 부모클래스와 일치 해야한다.
접근 제어자를 부모클래스보다 좁게 설정할 수 없다.
예외는 부모 클래스보다 많이 설정할 수 없다.

오버 라이딩과 오버로딩의 차이
오버로딩: 기존에 없는 새로운 메소드를 정의하는 것을 말한다.
오버라이딩: 상속받은 메소드의 내용을 변경하는 것을 말한다.

profile
이상한 나라의 개발하는 예대생
post-custom-banner

0개의 댓글