반응형
자바는 객체지향언어(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에 오버라이딩 했다
여기서 주의해야할 점은 선언부는 변경불가하고 내용만 변경가능하다!!
오버라이딩과 오버로드의 차이점을 알기 전에 오버라이딩의 조건을 먼저 알아보자
오버라이딩의 조건
- 선언부가 같아야 한다. (이름, 매개변수, 리턴타입)
- 접근제어자를 좁은 범위로 변경할 수 없다(public, protected, private)
- 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다 → 예외선언 조상이 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(){} 가 중복정의라 에러가 났다
반응형
'Programming > Java, Spring' 카테고리의 다른 글
[JAVA] 상속(inheritance)이란? / 상속의 특징 / 상속의 장점 / 예시 (0) | 2022.05.28 |
---|---|
[JAVA] 참조변수 super & 생성자 super (0) | 2022.05.24 |
[JAVA] 변수 초기화란? / 명시적 초기화 / 변수의 초기화 시기와 순서 (0) | 2022.05.17 |
[JAVA / JSP] 자바 빈즈(Java Beans)란? / 빈즈(Beans)의 장점 / 빈즈(Beans) 클래스 구조 (0) | 2022.05.15 |
[JAVA] this()와 this 의 차이점! (0) | 2022.05.14 |