Java 오버라이딩(overriding)
by 볼빵빵오춘기오버라이딩(overriding)
상속받은 조상의 메서드를 자신에 맞게 변경하는 것
(선언부가 같아야한다. 구현부의 내용만 다르게 할 수 있다.)
예제 코드1
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;
}
}
⇒
getLocation() Point(조상)에 있는 것을 그대로 쓰면 z를 쓰지못하니 오버라이딩해서 z를 추가 내용(=구현부)만 변경가능하다.
선언부는 변경이 불가하다.
예제코드2
더보기
class Point{
int x;
int y;
String getLocation(){
return "x : " + x +", y : " + y;
}
}
class Point3D extends Point{
int z;
}
public class OverrideTest{
public static void main(Sting[] args){
Point3D p = new Point3D();
p.x = 3;
p.y = 4;
p.z = 5;
System.out.println(p.getLocation());
}
}
⇒
x : 3, y : 4
class Point{
int x;
int y;
String getLocation(){
return "x : " + x +", y : " + y;
}
}
class Point3D extends Point{
int z;
// 조상의 getLocation()을 오버라이딩
String getLocation(){
return "x : " + x +", y : " + y + ", z : " + z;
}
}
public class OverrideTest{
public static void main(Sting[] args){
Point3D p = new Point3D();
p.x = 3;
p.y = 4;
p.z = 5;
System.out.println(p.getLocation());
}
}
⇒
x : 3, y : 4,z : 5
예제코드3
더보기
class Point{
int x;
int y;
// Object클래스의 toString()을 오버라이딩
// 밑에 코드에 public이 붙는이유는
// Object클래스의 toString()에 public이 붙어있어 그것을 유지하기위해 붙임
// 오버라이딩을 할려면 선언부가 똑같아야 하기때문
public String toString(){
return "x : " + x +", y : " + y;
}
}
public class OverrideTest{
public static void main(Sting[] args){
Point p = new Point();
p.x = 3;
p.y = 4;
System.out.println(p.toString());
System.out.println(p);
}
}
⇒
x : 3, y : 4
x : 3, y : 4
⇒ 참조변수.toString()을 하게 되면 오버라이딩전에는 참조변수의 주소가 출력이 된다.
⇒ println의 기능으로 참조변수만 넣으면 참조변수의 주소가 출력이 되었다.
오버라이딩의 조건
- 선언부가 조상 클래스의 메서드와 일치해야한다.
- 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩 vs 오버라이딩
단어가 비슷하여 헷갈릴 수 있다.
오버로딩
기존에 없는 새로운 메서드를 정의하는 것! (new, 이름이 같을 뿐)
상속과는 관계가 없다.
오버라이딩
상속받는 메서드의 내용을 변경하는 것(change, modify)
아래 그림을 보면서 오버로딩과 오버라이딩을 구분해보자!
답확인 ↓
더보기
⇒ 5번의 경우는 중복이기 때문에 error가 난다.
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 패키지(package), 패키지 선언, 클래스패스(classpath) (0) | 2023.11.29 |
---|---|
Java 참조변수 super, 생성자 super() (0) | 2023.11.29 |
Java 단일상속(Single Inheritance), Object 클래스 (0) | 2023.11.29 |
Java 클래스 간의 관계, 상속과 포함관계 (0) | 2023.11.29 |
Java 상속(Inheritance) (0) | 2023.11.29 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기