1) ① 한 클래스가 가지고 있는 속성과 기능(필드, 메소드)을 ② 또 다른 클래스에 끌어오는 기능
① = 부모 클래스, ② = 자식 클래스
2) 상속의 장점 - 코드길이 감소, 코드의 유지 및 보수가 용이함
3) 상속 이용방법
[접근제한자] class 자식클래스명 extends 부모클래스명{}
4) 상속의 종류
① 단일 상속 - 하나의 클래스는 하나의 부모만 가질 수 있음(but, 부모의 부모는 존재 가능)
② 다중 상속 - 여러개의 부모 클래스로부터 상속(자바에서는 미지원)
5) 상속의 특징
① 오버라이딩 - 부모 클래스 안의 메서드를 가져와 사용하되, 필요에 맞게 수정 가능
- 자식 객체를 통해 사용하면 후손 메소드가 우선권을 가짐
- 메서드 위에 '@override' 표기 필수
② 자식클래스에서는 부모 클래스의 생성자, 초기화 내용에 접근할 수 없음 -> super( ) 활용
e.g.)
// 부모 필드
public class Person {
private String name;
private int age;
private String nationality;
// 자식 생성자
public Student(String name, int age, String nationality, int grade, int classroom) {
// 부모의 필드에 private 접근제한자가 있어서 직접 접근 불가
// 부모의 생성자 중 매개변수 생성자 호출
super(name, age, nationality); // 이 필드변수에 대해서는 this 필요없음
this.grade = grade;
this.classroom = classroom;
1) 상속을 이용한 기술로, 여러 자식 객체를 참조하여 활용
2) 업캐스팅 - 자식타입의 참조변수가 부모 객체를 참조
- 이 경우 자식클래스는 부모 클래스의 속성과 기능만 활용 가능
e.g.)
// 부모 클래스
public class Car {
private String engine;
private String fuel;
private int wheel;
// 자식클래스
public class Spark extends Car {
private double discountOffer;
// 업캐스팅
Car car = new Spark(); // car 객체는 부모 클래스의 필드와 메서드만 사용 가능
3) 다운캐스팅 - 부모 타입의 참조변수가 자식 객체를 참조
- 업캐스팅이 반드시 선행되어 있어야함
// 다운캐스팅
((Car)car).moveSpark(); // car 객체는 부모 클래스의 필드와 메서드만 사용 가능