Java 상속

Overriding vs Overloading

수업소개

부모 클래스의 기능을 재정의 하는 Overriding. 클래스에 같은 이름의 메소드를 복수로 탑재하는 Overloading을 살펴봅니다. 

 

 

 

강의

 

 

 

 

소스코드

https://github.com/egoing/java-inheritance/commit/fa42413244f0d01e9e0c989bb4337179a0217165

class Cal{
    public int sum(int v1, int v2){
        return v1+v2;
    }
    // Overloading
    public int sum(int v1, int v2, int v3){
        return v1+v2+v3;
    }
}
class Cal3 extends Cal{
    public int minus(int v1, int v2){
        return v1-v2;
    }
    // Overriding
    public int sum(int v1, int v2){
        System.out.println("Cal3!!");
        return v1+v2;
    }

}
public class InheritanceApp {
    public static void main(String[] args) {
        Cal c = new Cal();
        System.out.println(c.sum(2,1));
        System.out.println(c.sum(2,1,1));

        Cal3 c3 = new Cal3();
        System.out.println(c3.sum(2,1));
        System.out.println(c3.minus(2,1));
        System.out.println(c3.sum(2,1));
    }
}
class Cal2{
    public int sum(int v1, int v2){
        return v1+v2;
    }
    public int minus(int v1, int v2){
        return v1-v2;
    }
}

 

댓글

댓글 본문
  1. nextLevel
  2. lehoo
    overridding: 상속과 관련O
    부모 클래스의 내용 안에 무언가의 내용을 덧붙히는 과정

    overloading: 상속과 관련X
    기존에 있던 메소드와 이름은 같지만, 부가적인 내용을 추가시키는 과정
  3. 당당
    2023.04.23
  4. 자바뿌시기
    22.01.07
  5. 요니요니
    감사해요
  6. 보통사람 박코딩
    할수있다
  7. 코딩드림
    221114
  8. 오버로딩 :과적하다

    이름은같지만 형태및 내용이 다른 메소드가 존재할수있다. => 어떤메소드의 기능을 추가과적 하는것

    ex)

    public static int sum(int v1, int v2){
    return v1+ v2; }

    //Overloading
    public static int sum(int v1, int v2, int v3){
    return v1 + v2; }
  9. 코딩이취미다
    오버로딩 : 상속과 관계가 없다

    정의 되는 위치가 부모 또는 자식 어느 쪽에서 구현을 하던 상관이 없다는 의미
  10. 육도
    2022.05.14 완료
  11. 나연
    2022년 2월 22일 (화) 완료

    오버라이등(overriding) : 부모 클래스의 메소드 재정의

    오버로딩(overloading) :
    - 오버로딩 자체는 상속과는 큰 상관 X
    - 자바는 같은 이름의 메소드를 여러 개 과적할 수 있음

    ```java
    class Calculator {

    public int add(int value1, int value2) {
    return value1 + value2;
    }

    // Overloading
    public int add(int value1, int value2, int value3) {
    return value1 + value2 + value3;
    }

    }

    class ChildCalculator extends Calculator {

    @Override
    public int add(int value1, int value2) {
    System.out.println("ChildCalculator");
    return value1 + value2;
    }

    public int subtract(int value1, int value2) {
    return value1 - value2;
    }

    }

    public class InheritanceApp {

    public static void main(String[] args) {

    Calculator calculator = new Calculator();
    System.out.println(calculator.add(2, 1));
    System.out.println(calculator.add(2, 1, 1));

    ChildCalculator calculator2 = new ChildCalculator();
    System.out.println(calculator2.add(2, 1));
    System.out.println(calculator2.subtract(2, 1));
    System.out.println(calculator2.add(2, 1));

    }

    }
    ```
  12. 열정jk
    220220 감사합니다
  13. 주간식당메뉴
    2021.12.01.
  14. 2021.09.02 완료
  15. 이마누
    완료
  16. Eunyoung Eunice Kang
    2021년 8월 14일 완료
  17. labis98
    20210814
  18. super1Nova
    210808
  19. 초딩 개발자
    2021/07/18
  20. jeisyoon
    2021.05.03 Overriding & Overloading - OK

    Overriding 은 Parent Class와 Child Class 내 동일한 Method가 있을 경우 상속받은 Parent Class 에 있는 Method 는 실행이 안되고 자신의 Class에 있는 method 가 실행되는 것이고,

    Overloading는 상속과는 관계 없이 동일 Class 내에 동일한 Method 이름으로 parameter 등을 추가하여 사용하는 것이다.
  21. 레이
    2021.04.18
  22. oyuiw
    20201213
  23. 자바가 무섭지 않은 예솔
    감사합니다!!
  24. 안광민
    overloading = 형태만 바꾸면 이름이 같은 method를 만들 수 있다

    완료
  25. 싱와
    Overload 하면 대한민국 남성에게는 모 게임의 괴상한 소리를 내는 코끼리를 생각하겠습니다만은,
    그 코끼리의 뜻을 정확하게 찾아볼 생각을 해보지 못한것은 조금 부끄럽습니다.

    Overload, 과적하다 라는 뜻을 가진 이 개념은

    기존 메소드에 매개변수의 개수를 추가하거나 하는 등의 행위를 통하여
    같은 이름을 가진 원메소드에서 기능을 조금 더 "과적"해서 추가하는것을 뜻합니다.
    기능만 추가하는것이므로, 원메소드와 이름도 동일하게 쓸 수 있습니다.

    아쉽게도 상속의 개념과는 조금 거리가 있지만,
    Override 와 Overload 의 개념이 이름이 비슷하기에 헷갈릴 수 있으니 잘 주의하여 정리가 필요합니다.
  26. 콜라
    감사합니다
  27. 하믄랑
    Overriding = 덮어쓰기, 세이브파일이 이미 있는 슬롯에 새로운 새이브 파일을 집어 넣는것 상속받은 클래스에서 사용

    Overloading=세이브 파일명이 전부 똑같은 이름으로 되어있는 상태이지만 실제로는 세이브된 내용은 다름
  28. 이정왓
    Overriding 과 Overloading의 차이.
    -
    Overriding은 상속의 개념으로 부모클래스에 있는 메소드나 변수를 extends를 통해
    굳이 같은 형태의 메소드를 입력하지 않아도 부모클래스에 있는 메소드를 끌어다 쓸 수 있는 기능이다.
    응용으로 수정, 추가 또한 가능하다. ex) System.out.println("Cal3!!");
    이것은 유지보수가 편리하고, 코드의 양을 줄이며 가독성을 높인다.
    -
    Overloading은 Overriding과 이름이 비슷하지만 조금 다른 개념이다. '
    상속'이라는 것과는 조금 멀리 떨어져 봐야할 필요가 있다.
    Overriding이 부모클래스의 멤버들을 이용할 수 있다면,
    Overloading은 부모클래스가 갖고 있는 메소드의 형태를
    자식클래스에서 조금 바꿔 "이름을 같게" 사용할 수 있다. (메소드의 매개변수 타입, 개수변화 등등)
    원래 메소드란 이름이 같을 수 없는데 이 경우 가능하다.
  29. 문과생
    수업 도중에 사용한 클래스 내에서 메소드 이름이 같은 경우가 있어서 궁금했는데 오버로딩이라고 하는군요.
  30. hyuna lee
    감사합니다. 무슨 차이인지 알것같아요.
  31. 빽토리얼
    오버로딩(Overloading): 한국어로 '과적화', 상속과 관련없음, 같은 메서드 이름을 가지면서도 매개변수 타입 및 개수를 변화시키고 생성함으로써 여러 상황에 대해 대처가 가능하게 한다.
    오버라이딩(Overriding): 상속과 관련 깊음, 부모 클래스를 상속받은 자식 클래스가 부모 메서드와 같은 이름의 메서드를 생성해 내용을 다르게 함으로써 부모와 다르게 활용이 가능하게 한다.
  32. 넘무
    강의 감사합니다
  33. thebluerat
    2020년 6월 25일 목요일