오늘 한 것
-
개발자인 친구를 만나서, 현재 내가 무엇을 해야되는지에 대한 조언을 받고 왔다.
-
자바 기본서 복습 (6장) 기존에 배우고 사용하면서도 ‘이건 왜 있는거지?’ 싶었던 것들을 이 책에서는 잘 설명해줘서 너무 좋았다. 오버로딩이랑 오버라이딩이 솔직히 조금 헷갈렸는데 확실하게 이해한 김에 간단하게 메모~ (책에 있는 내용을 참고했다)
오버로딩과 오버라이딩의 차이점
-
오버로딩 : 하나의 클래스에 같은 이름의 메소드들을 여러 가지 형태로 정의하는 것을 의미. -> 메소드 선언부의 반환형과 메소드 이름은 반드시 같게 하되, 매개변수의 개수나 데이터형이 달라야한다. -> 오버로딩된 메소드를 다른 객체에서 실행하면 JVM 내부에서 어떤 매개변수가 몇 개 들어왔는지 확인하여 적합한 메소드를 찾아 실행한다.
-
오버라이딩 : 상속 관계에 있는 자식 클래스에서, 상속받은 자원을 재 정의하는 것을 의미. -> ‘부모 클래스에 자식 클래스와 동일한 이름의 변수나 메소드가 있다면 자식 클래스의 것이 우선이다.’ -> 오버라이딩은 자식 클래스에서만 적용 가능하며 메소드의 선언부를 그대로 사용해야 한다. (단, 접근 제어자와 예외 처리는 제외) -> 오버라이딩을 하는 주된 이유는 상속받은 메소드들 중 수정해야할 내용이 있을 때 사용한다.
오버로딩 | 오버라이딩 | |
---|---|---|
적용 범위 | 하나의 클래스 내부 | 상속 관계에 있는 자식 클래스의 내부 |
포인트 | loading 즉, 메소드를 층층이 쌓는다라는 의미에 주목 | riding 즉, 기존에 있는 메소드에 올라탄다는 의미에 주목 |
목적 | 메소드의 효율성을 증가하기 위한 목적으로 사용 | 메소드를 재정의함으로써 여러 형태의 기능을 구현하는 목적으로 사용 |