ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Overriding, Overloading
    📚 개발백과 2023. 8. 21. 00:34
    728x90

    스프링 핵심 원리-기본편 섹션1 보충 - 다형성 이해를 위한 오버라이딩 복습(+ 오버로딩)

     

    ✅ 오버라이딩 Overriding

    자바에는 상속이라는 -기본의 클래스를 재사용해 새로운 클래스를 만드는- 개념이 있습니다.

    상속을 받아 그대로 쓸 수도 있지만,

    부모 클래스를 상속받아 자식 클래스가 부모 클래스의 메소드를 오버라이딩하여 자식 클래스가 본인에게 맞게 변경하여 사용할 때도 있습니다.

     

    오버라이딩은 메소드의 내용을 자신에게 맞게 재설정하는 것이기 때문에

    자식 클래스에서 오버라이딩하는 메소드는 부모 클래스의 메소드와 이름/매개변수/반환타입 같아야 합니다.

    이외에도 '부모의 접근제어자이하 범위만 사용가능', '부모보다 넓은 범위의 expection 사용불가' 등의 조건이 있는데,

    김영한님께서 말씀하신대로 '부모는 마음이 넓어서 자식을 다 품어줄 수 있다' 라고 쉽게 암기하면 좋을 것 같습니다.

     

    오버라이딩 개념을 복습하고 해당 PPT를 다시 보면 강의 내용이 확실히 이해될 것 입니다.

     

    부모(MemberRepository) 를 오버라이딩한 자식들(MemoryMemberRepository, JdbcMemberRepository).
    (중요) 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.

     


    다형성 이야기와는 벗어나있지만, 오버라이딩하면 항상 비교되는 단어가 있죠,

    오버라이딩을 언급한 김에 오버로딩도 같이 복습해보고자 합니다.

     

     오버로딩 Overloading

    오버로딩은 같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 사용하는 것입니다.

     

    add() 라는 함수를 만든다는 예를 들어보겠습니다.

    두 정수의 합을 계산하는 함수로 만들 수도,

    세 정수의 합을 계산하는 함수로 만들 수도,

    세 소수의 합을 계산하는 함수로 만들 수도,

    .

    .

    .

    각각의 경우를 서로 다른 함수로 만든다면, 코드의 낭비와 가독성이 떨어집니다.

    하지만 add() 라는 메소드 이름은 그대로 가져온채 메소드를 오버로딩하면, 코드의 가독성과 재사용성을 높일 수 있습니다.

     

     

    728x90
Designed by Tistory.