728x90
반응형
<오늘의 학습>
1. 업캐스팅
2. 다운캐스팅
3. instanceof
4. 오버라이딩
5. 오버로딩
6. 연결 리스트 (Linked list)
4. 오버라이딩 (재정의)
- 슈퍼 클래스에 선언된 메소드를, 각 서브 클래스들이 자신만의 내용으로 새로 구현하는 기능이다.
- 상속을 통해 객체 지향의 다형성을 실현한다. (하나의 인터페이스(같은 이름)에 서로 다른 내용 구현)
- 오버라이딩은 동적 바인딩을 통해 실행 중에 다형성을 실현한다.
- 예를 들어, 같은 draw()라는 이름의 메소드도 Circle 클래스의 draw()는 원을 그리고 Rect 클래스의 draw()는 사각형 그린다.
※ 동적 바인딩 : 실행할 메소드를 실행 시에 결정하며 오버라이딩 메소드가 항상 호출된다.
▶ 메소드 오버라이딩
- 메소드 오버라이딩 : 슈퍼 클래스의 메소드를 서브 클래스에서 재정의하는 것
- 슈퍼 클래스 메소드의 이름, 매개변수 타입 및 개수, 리턴 타입 등 모 든 것 동일하게 작성해야 한다.
- 메소드 무시하기, 덮어쓰기로 번역되기도 한다.
- 동적 바인딩 발생 : 서브 클래스에 오버라이딩된 메소드가 무조건 실행된다.
5. 오버로딩
- 같은 클래스나 상속 관계에서 동일한 이름의 메소드를 중복 작성하는 것이다.
- 오버로딩은 컴파일 타임 다형성 실현
▶ 오버라이딩과 오버로딩의 비교
메소드 오버로딩 | 메소드 오버라이딩 | |
선언 | 같은 클래스나 상속 관계에서 동일한 이름의 메소드를 중복으로 작성 | 서브 클래스에서 슈퍼 클래스에 있는 메소드와 동일한 이름의 메소드 재작성(재정의) |
관계 | 동일한 클래스 내 or 상속 관계 | 상속 관계 |
목적 | 이름이 같은 여러 개의 메소드를 중복으로 작성하여 사용의 편리성을 향상시키고, 다형성을 실현시키기 위함이다. | 슈퍼 클래스에 구현된 메소드를 무시하고 서브 클래스에서 새로운 기능의 메소드를 재정의하고, 다형성을 실현시키기 위함이다. |
조건 | 메소드 이름은 반드시 동일해야 하고, 매개변수의 타입이나 개수가 달라야 성립된다. | 메소드의 이름, 매개변수 타입, 개수, 리턴 타입이 모두 동일해야 성립된다. |
바인딩 | 정적 바인딩. 호출될 메소드는 컴파일 시에 결정된다. | 동적 바인딩. 실행 시간에 오버라이딩 된 메소드를 찾아서 호출한다. |
6. 연결 리스트 (Linked list)
- 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조.
- 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 다음 노드와의 연결을 담당한다.
- 배열 중간에 데이터를 추가하거나 삭제할 때 전체의 인덱스가 뒤로 밀리거나 당겨지는 현상이 일어나는데, 연결 리스트는 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않아 데이터의 추가와 삭제가 용이하다.
2023년 6월 1일 목요일
<14일차 수업 후기>
오버라이딩과 오버로딩은 의미는 비슷하지 않지만 이름이 비슷해서 가끔 헷갈렸다.
오늘 수업으로 오버라이딩은 재정의, 오버로딩은 생성자라는 특징을 외우니까 잘 외울 수 있었다. 오늘 이후로는 헷갈리지 않을 것 같다.
728x90
반응형
'HRD_훈련 > JAVA' 카테고리의 다른 글
[JAVA] 패키지와 Object 클래스 (15일차) (0) | 2023.06.05 |
---|---|
[JAVA] 추상 클래스와 인터페이스 실습 (15일차) (0) | 2023.06.05 |
[JAVA] 업캐스팅, 다운캐스팅, instanceof (14일차) (0) | 2023.06.01 |
[JAVA] static 멤버와 상속 (13일차) (0) | 2023.05.31 |
[JAVA] 클래스 실습 (12일차) (0) | 2023.05.30 |