///////
Search

오버라이딩 , 오버로딩

날짜
2022/09/26
URL

오버로딩

: 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것. 대표적인 예는 println이다.
오버로딩이 성립하기 위한 조건 (and)
1.
메서드 이름이 같아야 한다.
2.
매개변수의 개수 또는 타입이 달라야한다.
3.
반환 타입은 영향없다.
보기1 2번 조건 만족하지 않음, 그저 메서드 중복정의
int add(int a, int b) { return a+b; } int add(int x, int y) { return x+y; }
Java
복사
int add(int a, int b) { return a+b; } 1ong add(int a, int b) { return (long)(a+b); }
Java
복사
보기2 오버로딩 만족
long add(int a, long b) { return a+b; } 1ong add(long a, int b) { return a+b; }
Java
복사
보기2 에서, add(3,3)을 실행하면 오류가 난다. 3은 long으로도, int로도 인식이 되기 때문이다. 구분을 주기 위해 add(3,3L)으로 실행하면 첫번째 줄의 add()메소드가 실행된다.

오버라이딩

: 상속받은 조상의 메서드를 자신에 맞게 변경하는 것.
선언부( 반환타입, 메서드이름, 매개변수 목록)은 조상클래스의 메서드와 일치해야하여 변경불가하고, 구현부(내용)만 바꿀 수 있다.
class Shape { // 부모클래스 public void shape() {} public void draw() { System.out.println("도형을 그립니다."); } } class Rectangle extends Shape { // Shape를 상속한 Rec 클래스 public Rectangle() {} @Override // 부모 클래스의 draw()함수의 내용을 본 클래스에 맞게 수정 public void draw() { System.out.println("사각형을 그립니다."); } }
Java
복사
오버로딩: 기존에 없는 새로운 메서드를 정의하는 것, 이름만 같은것 뿐임. (new) 오버라이딩: 상속받은 메서드의 내용을 변경하는 것 (modify)