Java Overriding / OverLoading

Updated:

OverLoading

오버로딩(Overloading)은 메소드 오버로딩과 생성자 오버로딩이 있다. 하지만 둘다 같은 개념이다.

같은 이름의 함수를 여러 개 정의하고, 매개변수의 유형과 개수를 다르게 하여 다양한 유형의 호출에 응답하게 한다.

Example

class Calculator{
    public void sum(int a, int b){
        System.out.println("public void sum(int a, int b) is called value is : " + (a + b));
    }

    public void sum(int a, int b, int c){
        System.out.println("public void sum(int a, int b, int c) is called value is : " + (a + b + c));
    }

    public void sum(double a, double b){
        System.out.println("public void sum(double a, double b) is called value is : " + (a + b));
    }

}

public class Test {

    public static void main (String[] args){
        Calculator calculator = new Calculator();
        calculator.sum(1, 2);
        calculator.sum(1, 2, 3);
        calculator.sum(1.53, 2.51);
    }
}

Overriding

상위 클래스가 가지고 있는 멤버변수가 하위 클래스로 상속되는 것처럼 상위 클래스가 가지고 있는 메소드도 하위 클래스로 상속되어 하위 클래스에서 사용할 수 있다. 하지만, 하위 클래스에서 메소드를 재정의해서 사용할 수 있다.

상속 관계에 있는 클래스 간에 같은 이름의 메소드를 재정의하는 기술을 오버라이딩(Overriding) 이라고 한다.

하지만 오버로딩과 다르게 매개변수, 함수 명, 반환 타입 모든게 똑같아야 한다.

class Calculator{
    public void sum(int a, int b){
        System.out.println("Calculator Class is called value is : " + (a + b));
    }
}

class otherCalculator extends Calculator{

    @Override
    public void sum(int a, int b){
        System.out.println("otherCalculator Class is called value is : " + (a + b));
    }
}

public class Test {

    public static void main (String[] args){
        Calculator calculator = new Calculator();
        otherCalculator other = new otherCalculator();

        calculator.sum(1, 2);
        other.sum(1, 2);

    }
}

Leave a comment