Java

[Java] 오버로딩 VS 오버라이드

quedevel 2020. 12. 27. 19:29
728x90
반응형

오버로딩 ( overloading )

한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것

* 조건

1. 메서드 이름이 같아야 한다.

2. 매개변수의 개수 또는 타입이 달라야 한다.

ex ) PrintStream.java의 pringln()

public class PrintStream extends FilterOutputStream implements Appendable, Closeable {
			.
			.
			.
    
    public void println(boolean x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }
    
    public void println(char x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }
    
    public void println(int x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }
    			.
    			.
    			.
}

 

오버라이딩 ( overriding )

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것.

* 조건

1. 이름이 같아야 한다.

2. 매개변수가 같아야 한다.

3. 반환타입이 같아야 한다.

4. 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.

5. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

추상화에서 사용했던 예제 >

public class Dog extends Animal {
    @Override
    public void cry() {
        System.out.println("멍멍");
    }
}
728x90
반응형

'Java' 카테고리의 다른 글

[Java] OOP 5대 원칙  (0) 2021.01.10
[Java] 인터페이스(interface)  (0) 2020.12.30
[Java] OOP의 특징  (0) 2020.12.27
[Java] 객체지향언어  (0) 2020.12.27
[Java] Lambda & Stream 3  (0) 2020.02.26