[CH7. 객체지향프로그래밍2] 오버라이딩

2. 오버라이딩

2.1 오버라이딩이란?

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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.2 오버라이딩의 조건

메서드 선언부는 조상의 것과 완전 일치해야함.
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와

  • 이름이 같아야 한다.
  • 매개변수가 같아야 한다.
  • 리턴 타입이 같아야 한다.
  1. 접근제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
    ex) 조상클래스의 메서드의 접근 제어자가 protected라면
    자식클래스에서 오버라이딩 하는 메서드의 접근 제어자는 protected나 public 이어야함.
  2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
  • 조상 클래스의 메서드를 자손클래스에서 오버라이딩할 때
    1. 접근제어자를 조상클래스의 메서드보다 좁은 범위로 할 수 없다.
    2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
    3. 인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다.

2.3 오버로딩 VS 오버라이딩

  • 오버로딩(overloading) : 기존에 없는 메서드를 정의하는것(new)
  • 오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
1
2
3
4
5
6
7
8
9
10
11
12
class Parent{
void parentMethod(){};
}

class Chile extends Parent{
void parentMethod(){} // 오버라이딩;
void parentMethod(int i){} //오버로딩

void childMethod(){}
void childMethod(int i){} //오버로딩
void childMethod(){}// 에러 함수가 중복됨
}

2.4 super

자손클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수.
조상클래스의 멤버와 자손클래스의 멤버가 중복 정의되서 구별해야 되지 않는 상황이면 super대신 this를 써도 됨.
static 메서드(클래스 메서드)에서는 사용 할 수 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class SuperTest{
public void static void main(String args[]){
Child c = new Child();
c.method();
}
}

class Parent{
int x =10;
}

class Child extends Parent{
int x =20;
void method(){
system.out.println("x="+x);
system.out.println("this.x="+this.x);
system.out.println("super.x="+super.x);
}
}

실행 결과

1
2
3
x=20
this.x=20;
super.x=10;

2.5 super() - 조상클래스의 생성자

super()는 조상클래스의 생성자를 호출하는 생성자이다.
Object클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자(같은 클래스의 다른 생성자 또는 조상의 생성자)를 호출 해야함.
그렇지 않으면 컴파일러가 super(); 를 자동으로 첫줄에 삽입.

  1. 클래스 - 어떤 클래스의 인스턴스를 생성할것인가?
  2. 생성자 - 선택한 클래스의 어떤 생성자를 이용해서 인스턴스를 생성할 것인가?

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×