[자바/JAVA] 상속과 오버라이딩 그리고 Object 클래스

상속

자바에서 상속은 기존의 클래스를 재사용하기 위해 사용된다.

class A {
int x;
int y;
}
class B extends A { // B클래스가 A클래스를 상속받음
int z;
}

A 클래스를 상속받은 B 클래스는 선언한 z와 함께 x, y를 사용할 수 있다.

A를 조상 클래스, B는 자손 클래스라고 부른다.

오버라이딩

상속과 함께 따라오는 개념이 오버라이딩이다. 오버라이딩은 덮어 씌운다는 뜻인데, 자바에서 상속받은 메서드의 내용을 변경하는 걸 말한다.

class Point {
    int x;
    int y;

    String getLocation() {
        return x + y;
    }
}

class Point3D extends Point {
    int z;
    String getLocation() {
        return x + y + z; // getLocation()을 오버라이딩. +z를 추가
    }
} 

자바에서 모든 클래스는 Object 클래스를 상속받는다.

class A {

}

는 반드시

class A extneds Object {

}

라는 말이다.

즉, 어떤 클래스던지 Object 클래스의 메서드를 사용할 수 있다는 의미다. 매우 중요한 사실이다. 실제로 오버라이딩은 이런 방식으로 자주 활용된다.

 

Object 클래스가 기본적으로 제공하는 메서드들

예를 들어 Object 클래스에 포함된 toString()int 형 타입이 섞여서 선언된 클래스에서 String타입으로 값을 반환시켜준다.

class Card { // 카드의 속성을 담은 클래스
    int number; // 숫자
    String kind; // 무늬

    Card(int number, String kind) {
        this.number = number;
        this.kind = kind;
    }
    @Override // 오버라이딩된 메서드라는 걸 표현. 어노테이션이라고 부름.
    public String toString() { // Object 메서드를 오버라이딩.
        return number + kind;
    }
}

public class CardTest {
    public static void main(String[] args) {
        Card c = new Card(7, "clover");
        System.out.println(c); 
}

결과값

7 clover

 

반응형

댓글

Designed by JB FACTORY