OOP - 오버로딩과 오버라이딩의 차이
OOP 개념 - Overloading VS Overriding
1. Overloading
Load - 짐을 싣는다, 짐을 지다의 의미
일반적으로 한 클래스에 정의된 메서드의 이름은 중복될 수 없지만 오버로딩은 한 클래스에서 같은 이름을 가진 메서드가 여러개 존재할 수 있게 허용하는 개념이다. 하지만 메서드의 이름은 같아도 되지만, 매개변수까지 같아서는 안된다.
public class A
{
public int sum(int a, int b)
{
return a+b;
}
public int sum(float a, float b)
{
return a+b;
}
}
- 오버로딩을 사용하는 이유 : 오버로딩을 통해 같은 역할을 하는 메서드인데, 매개변수만 다른 것들을 같은 이름의 메서드로 만들어서, 한가지 역할의 메서드가 필요할 때 하나의 메서드를 매개변수만 다르게 해서 쓸 수 있기 때문에 편리하다. 게다가 객체지향 언어에서는 오버로딩 개념이 없으면 존재 자체가 불가능하다고 할 수 있다. 아래는 C++ 언어의 string 클래스인데, constructor부터 오버로딩의 예로 볼 수 있다.
2. Overridding
Ride 타다, 실려가다의 의미
오버라이딩은 상속 관계에 있어서, 부모클래스의 메서드를 자식 클래스에서 같은 이름으로 일할 수 있게 재정의(Redefine)하는 개념이다. 부모 클래스 메서드의 행동이 1이면, 자식 클래스 메서드의 행동을 1 + a로 만들 수 있다. 단, 부모 클래스에서 public, protected로 선언된 메서드만 오버라이딩 가능하다. 그리고 오버라이딩 시에는 오버로딩과 다르게 메서드가 동일해야한다.
class human{
public String name;
public int age;
public void info(){
System.out.println("사람의 이름은 "+name+", 나이는 "+age+"살입니다.");
}
}
class women extends human{
String gender;
public void info() {
super.info();
System.out.println("성별은 "+gender+"입니다.");
}
}
- 오버라이딩의 핵심은 다형성(Polymorphism)이다. 다형성은 객체지향 언어의 핵심 특징이기도 하다. 다형성이라는 개념을 쉽게 말하면 같은 형태이지만 여러 기능을 한다는 뜻으로 생각하면 쉽다.
Subscribe to Ykss's Coding Space
Get the latest posts delivered right to your inbox