Programming/Java, Spring

[JAVA] 오버라이딩이란?? / 오버라이딩 vs 오버로드

Juun 2022. 5. 21. 17:29
반응형

자바는 객체지향언어(OOP)이다.

객체지향언어는 몇가지 중요한 개념을 가지고 있는데 

이번 포스팅은 그중 하나라고 볼 수 있는 '오버라이딩(overriding)'에 대해서 정리해보려고 한다

 

오버라이딩(overriding)이란??

오버라이딩이란 조상클래스로부터 상속받은 메서드의 내용을 변경하는 것이다

class Point{
	int x;
    int y;
	
    String getLocation(){
    	return "x :" + x + ", y : " + y;
    }
}

class Point3D extends Point{
	int z;
    String getLocation() {	//오버라이딩
    	return "x :" + x + ", y : " + y + ", z : " + z;
    }
}

2차원좌표 위치인 Point class에서 3차원좌표 위치인 Point3D에 오버라이딩 했다

여기서 주의해야할 점은 선언부는 변경불가하고 내용만 변경가능하다!!

 

오버라이딩과 오버로드의 차이점을 알기 전에 오버라이딩의 조건을 먼저 알아보자


오버라이딩의 조건

  1. 선언부가 같아야 한다. (이름, 매개변수, 리턴타입)
  2. 접근제어자를 좁은 범위로 변경할 수 없다(public, protected, private)
  3. 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다 → 예외선언 조상이 2개인데 자손은 3개 일 수 없다

오버로딩 vs 오버라이딩

자바를 공부하다보면 오버로딩, 오버라이딩이란 말을 헷갈려 할 수 있다

결론을 먼저 말하면 이름만 비슷하지 전혀 관계없다!!

오버로딩은 이전에 포스팅을 했기 때문에 간단하게 알고 넘어가자

2022.05.10 - [Programming/Java] - [JAVA] 오버로딩(overloading)이란?? 메서드 오버로딩 / 오버로딩의 조건 / 오버로딩의 예

 

[JAVA] 오버로딩(overloading)이란?? 메서드 오버로딩 / 오버로딩의 조건 / 오버로딩의 예

자바에는 오버로딩(overloading)이라는 개념이 있다! 뒤에서 설명하겠지만 비슷한 용어의 오버라이딩(overriding)도 있다 둘이 이름은 비슷하지만 전혀 다른 개념이므로 추후에 따로 설명하겠다 오버

puenti.tistory.com

 

  • 오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것(new)
  • 오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
class Parent{
	void parentMethod(){}
}

class Child extends Parent{
	void parentMethod() {}		//	오버라이딩
	void parentMethod(iny i) {}	//오버로딩 (new)
	
    void childMethod() {}		// 메서드 정의
    void childMethod(int i) {}	// 오버로딩(new)
    void childMethod() {}		// 에러!
}

위에서 에러가 나온 부분은 childMethod(){} 가 중복정의라 에러가 났다

반응형