[자바/JAVA] 상속과 오버라이딩 그리고 Object 클래스
- Java
- 2021. 5. 7.
상속
자바에서 상속은 기존의 클래스를 재사용하기 위해 사용된다.
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 클래스에 포함된 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
반응형
'Java' 카테고리의 다른 글
[자바/JAVA] 정보은닉 | Private | getter, setter 메서드 생성 (0) | 2021.05.07 |
---|---|
[자바/JAVA] 현재 시간 출력하기 (0) | 2021.05.07 |
[자바/JAVA] 이클립스 인스턴스 변수 자동 초기화하는 법 (0) | 2021.05.06 |
[자바/JAVA] 객체 생성하는법 | 인스턴스 변수를 사용하기 위해 (0) | 2021.05.05 |
[자바/JAVA] public static void main(String[] args)의 의미 (0) | 2021.05.05 |