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
반응형

+ Recent posts