본문 바로가기
스파르타 내배캠

[TIL] #12. 다형성

by saemsaem 2024. 5. 7.


 

 [ 심화반 수업 ] 

overloading

: 같은 이름의 메서드, 다른 매개변수

- 정적다형성 (compile-time polymorphism)을 지원한다
   : 컴파일 시점에 어떤 메서드가 호출될지 결정됨

 

overriding

: 상위 클래스에서 정의된 메서드를 하위 클래스에서 재정의 하는 것
  메서드 시그니처(매개변수, 리턴타입)를 동일하게 가져감 ⇒ 내부 구현만 다름

- 런타임다형성 (runtime polymorphism)
   : 내부적으로 실행되는 시점에 어떤 메서드가 호출될 지 결정됨

- 확장성을 가짐

 

@Override (annotation)

: 컴파일러에 의해 (컴파일 시점에) 오버라이딩이 정확하게 되었는지 확인하는 것

- 오버라이딩 실수를 방지할 수 있음
- 다른 개발자가 코드를 읽기 쉬움
- 컴파일러를 통해 오류를 방지할 수 있음

 

다형성

: 객체의 속성, 기능이 상황에 따라 다른 역할을 하는 것
 !! 부모 타입의 참조 변수를 통해 여러 자식 타입의 객체를 참조할 수 있다 !!

Animal myPet = new Dog();

 - 하위클래스 타입으로 상위클래스 객체를 참조할 수는 없음
 - 상위클래스로 하위클래스를 참조했다면, 하위 클래스의 메서드는 사용할 수 없음

  • 다운캐스팅
     : 상위클래스 → 하위클래스
     - 하위 클래스 사용 가능
  • 일시적 다운캐스팅
    : 선언할 때가 아니라, 메서드를 사용할 때만 캐스팅 할 수 있음 (하위 메서드를 사용해야 할 때)
  • 명시적 다운캐스팅
     - 실행되면 안되는 코드를 실행시키려고 했기 때문에, 문제가 생기면 개발자가 책임지겠다는 의미

'스파르타 내배캠' 카테고리의 다른 글

[TIL] #14. SQL  (0) 2024.05.09
[TIL] #13. Class  (0) 2024.05.08
[TIL] #11. Exception, Naming Convention  (0) 2024.05.03
[TIL] #10. URL, HTTPS  (0) 2024.05.03
[TIL] #9. do-while, constructor, abstract  (0) 2024.05.01