[JAVA] 오버로딩, 오버라이딩

Sangho Kim·2022년 9월 26일
0

JAVA

목록 보기
9/17

오버로딩이란?

같은 이름의 메소드를 중복하여 정의하는 것
원래 자바에서는 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없는데,
매개변수의 개수나 타입을 다르게 하면, 하나의 이름으로 메소드를 작성가능

ex)

void println(int x)
void println(String x)
void println(long x)
.
.
.

오버로딩이 성립하기 위한 조건

  1. 메소드 이름이 같아야 함
  2. 매개변수의 개수 또는 타입이 달라야 함
  3. 변환타입엔 영향끼치지 않는다.
double add(int a, double b) {return a+b;}
double add(double a, int b) {return a+b;}

오버로딩 예제 코드

class Test {

    static void display(int num1) { System.out.println(num1); }

    static void display(int num1, int num2) { System.out.println(num1 * num2); }

    static void display(int num1, double num2) { System.out.println(num1 + num2); }

}

 

public class Method06 {

    public static void main(String[] args) {

        Test myfunc = new Test();

 

        myfunc.display(10);

        myfunc.display(10, 20);

        myfunc.display(10, 3.14);

        myfunc.display(10, 'a');

    }

}

출력결과

10
200
13.14
970

출처) TCP School(http://www.tcpschool.com/java/java_usingMethod_overloading)


오버라이딩이란?

위에 덮어쓰다 라는 뜻으로 상속받은 메소드의 내용을 재정의하는 것 (change)

class Exployee {
    public int getSalary() {
        return 0;
    }
}

class Manager extends Exployee {
	@Override
    public int getSalary() {
        return 5000000;
    }
}

class Programmer extends Exployee {
	@Override
    public int getSalary() {
        return 6000000;
    }

}

public class salary {

    public static void main(String[] args) {
        Manager obj1 = new Manager();
        System.out.println("관리자의 월급: " + obj1.getSalary());

        Programmer obj2 = new Programmer();
        System.out.println("관리자의 월급: " + obj2.getSalary());
    }

}

출력 결과

관리자의 월급: 5000000
관리자의 월급: 6000000

getSalary 를 오버라이딩 한 것이다.

주의할 점

메소드 앞에 final을 붙이면 해당 메소드는 더 이상 오버라이딩을 할 수 없다.
클래스 앞에 final이 붙어도 해당 클래스를 상속 할 수 없다.


정리

표로 간단하게 정리하자면 이렇게 정리할 수 있다.

profile
Immediately, certainly, until it becomes.

0개의 댓글