본문 바로가기
* Web/[Back] Java

[Java] 자바 : 메소드 오버로딩(Overloading) vs 메소드 오버라이딩(Overiding) 차이점?

by codinguser 2021. 3. 18.

메소드 오버로딩(Overloading)과 메소드 오버라이딩(Overriding) 한 번에 이해하기


본론으로 가기전, 명확한 개념을 딱 집어서 이해하기 보다는 그림으로 이해하는것이 가장 쉽습니다.

또한 기준이 되는 것은 클래스 1개의 내부에서 일어나는 일인지 혹은 2개 이상의 클래스에서 발생하는지를 기준으로 접근하시면 쉽습니다. 또한 영어단어를 기반으로 이해하기 보다는, 클래스 상에서 어떻게 쓰이는지 중점적으로 보고 머리에 그림을 그리며 이해하면 쉽습니다.

 

 

 

[ 판단 기준 ]


- 클래스 1개에서 일어나는가?

- 2개 이상의 클래스에서 일어나는가?

 

 

 

 

 

 

 

 

 

 

* 오버로딩(Overloading)

한 클래스(n=1)내에 똑같은 이름의 메소드를 여러 개 선언 하는 것.

 

class ONE{

 

...

...

 

    void upgrade(int hp){

        this.age = age;

    }

 

    void upgrade(int hp, float mp){

        this.hp = hp;

        this.mp = mp;

    }

 

    void upgrade(int hp, float mp, int cooltime)

        this.hp = hp

        this.mp = mp;

        this.cooltime = cooltime;

    }

}

 

: 이름만 같을 뿐 파리미터는 다르다. 서로 다른 메서드인 것이다.

 

 

 

 



* 메소드 오버라이딩(Overriding)

(서로 다른 클래스>=2)에서 부모의 메소드를 자식 클래스에서 재정의 하는 것.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Main {  
 
  ...
  ...
  ...
  
}
 
class Figure {
  String name;
 
  public double area(){
    return 0;
  }
}
 
class Rectancle extends Figure {
  int lenght1;
  int length2;
 
  public double area(){
    return length1 * length2;
  }
}
 
class Circle extends Figure {
  int radius;
 
  public double area(){
    return 3.14 * radius * radius;
  }
  
}
 
class Trianagle extends Figure {
  int side;
  int height;
 
  public double area(){
    return 0.5* side * height
  }
}
 
cs

 

: 이렇게 가장 근간인 부모 클래스 즉 Figure에서 area() 정의 한것을 자식 개체에서 그대로 가져 와서 재정의 하는 것.

 

이 때 접근제한자와, 반환타입 모두 같아야 한다.

 

댓글