코드 그라데이션

후발대 9일차 개념정리 본문

Java/후발대

후발대 9일차 개념정리

완벽한 장면 2023. 1. 16. 11:10

오버로딩이란?

  • 메서드도 변수와 마찬가지로 같은 클래스 내에서 서로 구별될 수 있어야 하기 때문에 각기 다른 이름을 가져야 한다.
  • 자바에서는 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있다.
  • 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는 것을오버로딩이라고 한다.

 

  • 오버로딩의 조건
  • 메서드 이름이 같아야 한다.
  • 매개변수의 개수 또는 타입이 달라야 한다.
  • 참고) 오버로딩된 메서드들은 매개변수에 의해서만 구별될 수 있으므로 반환 타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.

 

  • 오버라이딩(overriding)
  • 부모(조상)클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다.
  • 상속된 그대로 쓰는것이 아닌 자손클래스 자신에 맞게 메서드를 변경해야 하는 경우가 많은데, 이럴때 오버라이딩한다. (overwrite:덮어쓰다의 개념에서 유래)

 

  • 오버라이딩의 조건
  • 자손클래스에서 오버라이딩하는 메서드는 부모(조상)클래스의 메서드와
  • : 이름이 같아야 한다.
  • : 매개변수가 같아야 한다.
  • : 반환타입이 같아야 한다.
  • 요약하자면 선언부가 서로 일치해야 한다는 것이다.

 

  • 오버로딩 vs 오버라이딩
  • 오버로딩(overloading) 기존에 없는 새로운 메서드를 정의하는 것(new)
  • 오버라이딩(overriding) 상속받은 메서드의 내용을 변경하는것 (change, modify)

 

 

Polymorphism

(1) 다형성이란?

다형성이란 다양한 형태 또는 특성을 가진다는 의미.

자바와 같은 객체 지향 언어에서의 의미는 부모클래스를 상속받은 자식 클래스의 인스턴스가 부모의 객체로도 사용되고, 뿐만 아니라, 자식 클래스의 객체로도 사용될 수 있는 다양한 상황을 의미한다.

 

(2) 예시

부모클래스에 Bird가 있고, 이를 상속받은 자식 클래스 Parrot이 있다고 가정하자.

이때, “앵무새가 말을 하네~ 허허사람들이 이렇게 이야기 할 수 있다.

그런데 앵무새는 새이기 때문에 새가 말을 하네이렇게 말할수도 있다.

 

(3) 결론

정리하면 하위클래스의 인스턴스(객체)는 보다 위인 상위 클래스의 인스턴스(객체)로도 사용될 수 있다.

그런데 그 반대는 안된다.

왜냐하면 앵무새는 분명 그 상위 클래스인 라고 말할 수 있지만, 새는 종류가 많기 때문에 모든새가 앵무새는 아니기 때문이다.

따라서 상위(부모) 클래스의 인스턴스(객체)는 하위(자식) 클래스의 인스턴스(객체)로 사용될 수 없다.

 

이런 논리라고 보면 된다.

 

여러 형태를 받아들일 수 있는 성질, 상황에 따라 의미를 다르게 부여할 수 있는 특성 등으로 정의를 하기도 한다. 정리하면 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질로 이해하면 될 것이다.

 

728x90

'Java > 후발대' 카테고리의 다른 글

후발대 9일차 클래스별 깔끔하게 정리  (0) 2023.01.17
후발대 8일차 클래스별 깔끔하게 정리  (0) 2023.01.17
후발대 9일차 전체 코드  (0) 2023.01.16
후발대 8일차  (0) 2023.01.14
후발대 7일차  (0) 2023.01.14
Comments