오버라이딩과 오버로딩이란?

일단 오버로딩(OverLoading)은 클래스내에 같은 이름의 메소드를 여러개 생성을 하는 것을 의미한다. 물론 메소드는 이름만 같고 각자 인자값이 틀리던가 인자의 개수가 틀리던가 하는 것이다. 그리고 오버라이딩(OverRiding)은 상속에서 나오는 기술인데, 부모클래스에게서 물려받은 메소드를 자신이 원하는데로 변화를 줘서 사용을 하는 기술이다.

OverLoading

예제

void test(int num){
    ...
}
void test(int num,int num2){
    ...
}
void test(double num){
    ...
}
void test(int num,double num2){
    ...
}
void test(double num,int num2){
    ...
}

이와 같이 다양하게 인자를 줌으로서 OverLoading이 가능하다.

OverRiding

예제

class 부모클래스{
    String testStr;
    부모클래스(String str){
        testStr=str;
    }
    void showTestStr(){
        System.out.println(testStr);
    }
}

class 자식클래스 extends 부모클래스{
    자식클래스(String str){
        super(str);
    }
    @Overriding
    void showTestStr(){
        super.showTestStr();
        System.out.println("커스텀 showTestStr()");
    }
}

자식 클래스에서 부모 클래스에 있는 메소드를 그대로 시행을 한뒤에 추가적인 동작을 정하고 싶은 경우 super.메소드명(인자)를 호출한뒤에 동작을 정해주면 되나, 만약 이름만 사용하고 완전 커스텀을 하고 싶으면 아래와 같이 사용하면 된다

class 자식클래스 extends 부모클래스{
    자식클래스(String str){
        super(str);
    }
    @Overriding
    void showTestStr(){
        System.out.println("커스텀 showTestStr()");
    }
}

super와 this

위에서 언급한데로 super명령어는 상속받은 클래스를 지정하는 명령어이다. 그러나 지금 설명할 this명령어는 현재 클래스를 지정하는 명령어로, 메소드에서 메소드 변수의 명과 클래스 변수의 명이 같은경우 this를 앞에 붙여주면 클래스변수로 지정이 되는 효과가 있다. 물론 앞에 super명령어를 붙여주면 부모클래스의 클래스변수를 불러 올수 있다.

results matching ""

    No results matching ""