Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

메서드 오버라이딩(overriding), toString을 사용하여 출력하기 본문

Java/객체지향

메서드 오버라이딩(overriding), toString을 사용하여 출력하기

빌드이너프 2023. 6. 6. 22:14

(메서드)오버라이딩(overriding)

상속받은 조상의 메서드를 자신에 맞게 변경하는 것

 

오버라이딩 되지 않은 것

getLocation() 오버라이딩 되지 않음

class Point { // 2차원
    int x;
    int y;

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

class Point3D extends Point { // 3차원
    int z;
}

public class overrideTest {
    public static void main(String[] args) {
        Point3D p = new Point3D();
        p.x = 3;
        p.y = 5;
        p.z = 7;
        System.out.println(p.getLocation());
    }
}

x :3, y :5

 

오버라이딩 된 것

getLocation() 오버라이딩 됨

class Point { // 2차원
    int x;
    int y;

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

class Point3D extends Point { // 3차원
    int z;

    String getLocation() { // 오버라이딩
        return "x :" + x + ", y :" + y + ", z: " + z;
    }
}

public class overrideTest {
    public static void main(String[] args) {
        Point3D p = new Point3D();
        p.x = 3;
        p.y = 5;
        p.z = 7;
        System.out.println(p.getLocation());
    }
}

x :3, y :5, z: 7

 

toString을 사용하여 출력하기

1번 방법

class Point extends Object {
    int x;
    int y;

    // Object 클래스의 toString()을 오버라이딩
    public String toString() {
        return "x :" + x + ", y :" + y;
    }
}

public class overrideTest {
    public static void main(String[] args) {
        Point p = new Point();
        p.x = 3;
        p.y = 5;
        System.out.println(p.x);
        System.out.println(p.y);
    }
}

3
5

 

2번 방법

class Point extends Object {
    int x;
    int y;

    // Object 클래스의 toString()을 오버라이딩
    public String toString() {
        return "x :" + x + ", y :" + y;
    }
}

public class overrideTest {
    public static void main(String[] args) {
        Point p = new Point();
        p.x = 3;
        p.y = 5;

        System.out.println(p.toString());
    }
}

x :3, y :5

 

3번 방법

생성자 사용

class Point extends Object {
    int x;
    int y;

    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    // Object 클래스의 toString()을 오버라이딩
    public String toString() {
        return "x :" + x + ", y :" + y;
    }
}

public class overrideTest {
    public static void main(String[] args) {
        Point p = new Point(3, 5);

        System.out.println(p);
    }
}

x :3, y :5

 

 

오버라이딩 조건

1. 선언부가 조상 클래스의 메서드와 일치해야 한다

    선언부(반환 타입, 메서드 이름, 매개변수 목록)

    String getLocation() { } 부분

class Point { // 2차원
    int x;
    int y;

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

class Point3D extends Point { // 3차원
    int z;

    String getLocation() { // 오버라이딩
        return "x :" + x + ", y :" + y + ", z: " + z;
    }
}

 

2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다

    접근 제어자: public, protected, private, (default)

 

3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다

class Parent {
    void parentMethid() throws IOException, SQLEception { // 예외 2개
        ...
    }
}

class Child extends Parent {
    void parentMethod() throws IOException { // 예외 1개
        ...
    }
    ...
}