Java 오버라이딩(overriding)

nathan·2021년 12월 31일
0

JAVA

목록 보기
15/45

메서드 오버라이딩(overriding)

  • override : v. 덮어쓰다.
  • 상속받은 조상의 메서드를 자신에 맞게 변경하는 것.
public class EX7_3 {
    public static void main(String[] args) {
        My3DPoint mp = new My3DPoint();
        System.out.println(mp.toString()); // toStringOverriding
        System.out.println(mp); // toStringOverriding
    }
}

class MyPoint{
    int x;
    int y;

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

    // Object 클래스의 toString()을 오버라이딩
    // 원래 toString()이 public으로 선언되어있기 때문에 일치시켜 주어야 한다.
    public String toString(){
        return "toStringOverriding";
    }
}


class My3DPoint extends MyPoint{
    int z;

    String getLocation(){ // 메서드 오버라이딩(내용만 변경가능, 선언부 변경 불가)
        return "x: "+x+", y: "+y+", z: "+z;
    }
}

오버라이딩 조건

    1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
    1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.(public, protected, default, private)
    1. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
class Parent{
    void parentMethod() throws IOException, SQLException {
       //  ...
    }
}

class Child extends Parent{
    void parentMethod() throws IOException{
        // ...
    }
}

오버로딩 vs. 오버라이딩

  • 오버로딩 : 기존에 없는 새로운 메서드를 정의하는 것(new)
  • 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것(change, modify)
profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글