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. 하믄랑
    Overriding = 덮어쓰기, 세이브파일이 이미 있는 슬롯에 새로운 새이브 파일을 집어 넣는것 상속받은 클래스에서 사용

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