7-7~9 오버라이딩(Overriding)

oyeon·2020년 12월 24일
0

(완)객체지향 개념

목록 보기
20/37
  • 정확히는 메서드 오버라이딩
  • 상속받은 조상의 메서드를 자신에 맞게 변경하는 것
class Point{
    int x;
    int y;
    
    String getLocation(){
    	return x + "," + y;
    }
}
class Point3D extends Point{
    int z;
    
    String getLocation(){	// 오버라이딩
    	return x + "," + y + "," + z;
    }
}

생성자, toString 오버라이딩 활용 예제 - 간결해진 코드를 느껴보자

class Point{
    int x;
    int y;
    
    Point(int x, int y){	// 생성자 선언
    	this.x = x;
        this.y = y;
    }
    public String toString(){	// 오버라이딩
    	return x + "," + y;
    }
}
public class OverrideTest{
    public static void main(String[] args){
    	Point p = new Point(3, 5);	// 생성자 선언했기 때문에 가능
        System.out.println(p);   
        // System.out.println(p.toString); 위와 동일
        // 생성자 없을 경우 초기화 방법
        // Point p = new Point();
        // p.x = 3;
        // p.y = 5;
        
        // toString 오버라이딩 하지 않을 경우 출력 방법
        // System.out.println(p.x + "," + p.y);
    }
}

오버라이딩의 조건

  • 선언부가 조상 클래스의 메서드와 일치해야 한다.
  • 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
  • 예외(throws 뒤에 붙는 것)는 조상 클래스의 메서드보다 많이 선언할 수 없다.
profile
Enjoy to study

0개의 댓글