-
[Java] Overriding, Overloading📚 개발백과 2023. 8. 21. 00:34728x90
스프링 핵심 원리-기본편 섹션1 보충 - 다형성 이해를 위한 오버라이딩 복습(+ 오버로딩)
✅ 오버라이딩 Overriding
자바에는 상속이라는 -기본의 클래스를 재사용해 새로운 클래스를 만드는- 개념이 있습니다.
상속을 받아 그대로 쓸 수도 있지만,
부모 클래스를 상속받아 자식 클래스가 부모 클래스의 메소드를 오버라이딩하여 자식 클래스가 본인에게 맞게 변경하여 사용할 때도 있습니다.
오버라이딩은 메소드의 내용을 자신에게 맞게 재설정하는 것이기 때문에
자식 클래스에서 오버라이딩하는 메소드는 부모 클래스의 메소드와 이름/매개변수/반환타입이 같아야 합니다.
이외에도 '부모의 접근제어자이하 범위만 사용가능', '부모보다 넓은 범위의 expection 사용불가' 등의 조건이 있는데,
김영한님께서 말씀하신대로 '부모는 마음이 넓어서 자식을 다 품어줄 수 있다' 라고 쉽게 암기하면 좋을 것 같습니다.
오버라이딩 개념을 복습하고 해당 PPT를 다시 보면 강의 내용이 확실히 이해될 것 입니다.
다형성 이야기와는 벗어나있지만, 오버라이딩하면 항상 비교되는 단어가 있죠,
오버라이딩을 언급한 김에 오버로딩도 같이 복습해보고자 합니다.
✅ 오버로딩 Overloading
오버로딩은 같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 사용하는 것입니다.
add() 라는 함수를 만든다는 예를 들어보겠습니다.
두 정수의 합을 계산하는 함수로 만들 수도,
세 정수의 합을 계산하는 함수로 만들 수도,
세 소수의 합을 계산하는 함수로 만들 수도,
.
.
.
각각의 경우를 서로 다른 함수로 만든다면, 코드의 낭비와 가독성이 떨어집니다.
하지만 add() 라는 메소드 이름은 그대로 가져온채 메소드를 오버로딩하면, 코드의 가독성과 재사용성을 높일 수 있습니다.
728x90'📚 개발백과' 카테고리의 다른 글
[Git] git filter-repo로 올리면 안되는 파일기록 말소하기 (0) 2024.06.24 [NCP, Docker] 왜 내 서버 Disk 사용량이 90퍼? (1) 2024.05.30 [GitHub Action, Docker, SSH] application.yml 에 환경변수 많은데 어떻게 하지 (0) 2024.05.27 [GitHub Action] Error_command not found: docker (0) 2024.05.27 kafka 다운 및 실행 (1) 2023.12.23