클래스 상속과 객체
자바와 상속 선언
자바에서는 부모 클래스를 슈퍼 클래스(super class), 상속받는 자식 클래스를 서브 클래스(sub class)라고 부르며, 상속을 선언할 때 확장한다는 뜻을 가진 extends 키워드를 사용합니다.
public class Person {
...
}
public class Student extends Person { // Person을 상속받는 클래스 Student 선언
...
}
public class StudentWork extends Student {
// Student를 상속받는 클래스 StudentWork 선언
...
}
상속과 객체
클래스 상속 만들기 - Point와 ColorPoint 클래스
class Point {
private int x, y; // 힌 점을 구성하는 x, y 좌표
public void set(int x, int y) {
this.x = x; this.y = y;
}
public void showPoint() { // 점의 좌표 출력
System.out.println("(" + x + "," + y + ")");
}
}
class ColorPoint extends Point { // Point을 상속받은 ColorPoint 선언
private String color; // 점의 색
public void setColor(String color) {
this.color = color;
}
public void showColorPoint() { // 컬러 점의 좌표 출력
System.out.print(color);
showPoint(); // Point 클래스의 showPoint() 호출
}
}
public class ColorPointEx {
public static void main(String[] args) {
Point p = new Point(); // Point 객체 생성
p.set(1, 2); // Point 클래스의 set() 호출
p.showPoint();
ColorPoint cp = new ColorPoint(); // ColorPoint 객체 생성
cp.set(3, 4); // Point 클래스의 set() 호출
cp.setColor("red"); // ColorPoint 클래스의 setColor() 호츌
cp.showColorPoint(); // 컬러와 좌표 출력
}
}
실행 결과
(1,2)
red(3,4)
상속 선언
Point를 상속받는 ColorPoint 클래스의 상속 선언은 다음과 같습니다.
class ColorPoint extends Point {
...
}
서브 클래스 객체 생성
상속에서 일차적으로 이해해야 하는 것은 바로 서브 클래스의 객체의 모양입니다.

서브 클래스 객체 활용
cp.x = 10; // private 멤버 x 접근 불가
cp.color = "red" // private 멤버 color 접근 불가
서브 클래스에서 슈퍼 클래스 멤버 접근
서브 클래스는 슈퍼 클래스의 private 멤버를 제외하고 모든 멤버를 접근할 수 있습니다.

자바 상속의 특징
자바에서는 클래스의 다중 상속을 지원하지 않습니다.
- 자바는 클래스를 여러 개 상속받는 다중 상속(multiple inheritance)을 지원하지 않습니다.
자바에서는 상속의 횟수에 따라 제한을 두지 않습니다.
자바에서 계층 구조의 최상위에 java.lang.Object 클레스가 있습니다.
사용자가 만들든 자바패키지에서 제공하든, 자바에서 모든 클래스는 Object 클래스를 자동으로 상속받도록 컴파일됩니다.
Object를 상속받도록 선언하지 않더라도 마찬가지입니다.