ch07. 오버라이딩 (객체지향 프로그래밍 추가정리)

yuju9·2022년 2월 7일
0

오버로딩 vs. 오버라이딩

  • 오버로딩: 기존에 없는 새로운 메소드를 추가하는 것
  • 오버라이딩: 상속받은 메소드의 내용을 변경하는 것
오버로딩오버라이딩
메소드 이름동일동일
매개변수, 타입다름동일
리턴 타입상관 없음동일
메소드 결정시점컴파일런타임

※ 소스 코드를 기계 코드로 변환하는 기간을 컴파일 시간이라고합니다. 구문 분석, 의미 분석 및 코드 생성과 같은 작업은 컴파일 타임에 발생합니다. 컴파일 타임에 생성 된 실행 파일을 실행하는 기간을 런타임이라고합니다.


Static 메소드가 오버라이딩이 불가능한 이유

JVM 이 메서드를 호출할 때, instance method 의 경우 런타임 시 해당 메서드를 구현하고 있는 실제 객체를 찾아 호출한다. (다형성) 하지만 컴파일러와 JVM 모두 static 메서드에 대해서는 실제 객체를 찾는 작업을 시행하지 않기 때문에 class method(static method)의 경우, 컴파일 시점에 선언된 타입의 메서드를 호출한다. 그래서 static 메소드에서는 다형성이 적용되지 않습니다.
그리고 애초에 static에 경우 클래스단위로 만들어지기 때문에 객체 단위로 형성되는 Override 성립될 수 없다.



참고

https://sungman.tistory.com/m/9
https://minni7.tistory.com/m/32
https://hsik0225.github.io/java/2020/12/17/Static-Override/
https://wedul.site/457

0개의 댓글

관련 채용 정보