Language/Java

Java 오버로딩, 오버라이딩

SambaLim 2019. 3. 1. 22:55
오버로딩, 오버라이딩

자바의 특징으로 다형성이 있습니다.

다형성은 객체를 다향한 형태로 사용하고 관리할 수 있는 자바의 대표적인 특징입니다.

 

OverLoading (오버로딩)

자바에서는 입력항목(매개변수)이 다른 경우 동일한 이름의 메소드를 만들 수 있는데, 이를 메소드 오버로딩이라고 합니다.

하나의 객체에서 이름이 같은 메소드를 여러개 정의하여 사용할 수 있습니다.

class HelloJava {
    public void hello() {
        System.out.println("hello()");
    }
    public void hello(int i) {
        System.out.println("hello(int i)");
    }
    public void hello(String str) {
        System.out.println("hello(String str)");
    }
}

public class Main {
    public static void main(String[] args) {
        HelloJava hi = new HelloJava();
        
        hi.hello();
        // hello()
        hi.hello(10);
        // hello(int i)
        hi.hello("Hello");
        // hello(String str)
    }
}

 

OverRiding (오버라이딩)

자식클래스의 메소드가 부모 클래스의 메소드를 다시 정의하고 덮어써서 사용할 수 있는데, 이를 메소드 오버라이딩이라고 합니다.

public class Parent {
    public void sayHello() {
        System.out.println("Parent say Hello!");
    }
    public void call() {
        System.out.println("Parent call");
    }
}

public class Son extends Parent {
    public void sayHello() {
        System.out.println("Son say Hello!");
    }
    public void call() {
        System.out.println("Son call");
    }
}

public class Daughter extends Parent {
    public void sayHello() {
        System.out.println("Daughter say Hello!");
    }
    public void call() {
        System.out.println("Daughter call");
    }
}

public class Main {
    public static void main(String[] args) {
        Parent pp = new Parent();
        
        pp.sayHello();
        // Parent say Hello!
        pp.call();
        // Parent call
        
        Son ss = new Son();
        
        ss.sayHello();
        // Son say Hello!
        ss.call();
        // Son call
        
        Daughter dd = new Daughter();
        
        dd.sayHello();
        // Daughter say Hello!
        dd.call();
        // Daughter call
    }
}

 

오버로딩, 오버라이딩의 조건

구분오버로딩오버라이딩
메소드 이름동일동일
매개변수 타입다름동일
리턴 타입상관없음동일

 

'Language > Java' 카테고리의 다른 글

Java serialVersionUID 사용이유  (0) 2019.03.09
Java String... 은 무엇인가?  (1) 2019.03.08
Java UUID 사용하기  (1) 2019.03.07
try-catch-finally의 기본형태와 return  (0) 2019.02.28
Java에서의 call by value, call by reference  (0) 2019.02.23