min's devlog
상속(inheritance) 본문
상속(inheritance)
- 기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것
- 캡슐화, 추상화와 더불어 객체 지향 프로그래밍(OOP)을 구성하는 중요한 특징 중 하나
- 상속을 이용하면 기존 클래스의 필드와 메소드를 물려받아 새로운 클래스를 생성할 수 있다.
- 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class)라고 한다.
- 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class)라고 한다.
상속의 장점
- 기존에 작성된 클래스 재활용 > 코드 중복을 막을 수 있다.
- 클래스 간의 계층적 관계를 구성해 다형성의 문법적 토대를 마련한다.
자식 클래스
- 자식 클래스는 부모 클래스의 모든 특성을 물려받아 새롭게 작성된다.
- 부모 클래스에 새로운 필드를 하나 추가하면, 자식 클래스에도 자동으로 추가된 것처럼 동작한다.
* 주의
- 생성자는 X. 필드와 메소드만이 상속된다.
- private이나 default로 설정된 멤버는 상속 받더라도 접근은 불가능하다.
class Parent {
private int a = 10;
public int b = 20;
}
//extend로 상속
class Child extends Parent {
public int c = 30;
void display() {
// System.out.println(a);
System.out.println(b);
System.out.println(c); // 자식 클래스에서 선언한 public 필드 참조
}
}
public class Inheritance {
public static void main(String[] args) {
Child ch = new Child();
ch.display();
}
}
실행 결과
20
30
주석 처리한 System.out.println(a); 는 상속받은 private 필드를 참조하고 있다. 하지만 부모 클래스의 private 필드는 접근할 수 없어 에러를 발생시켰다.
System.out.println(b); 는 자식클래스에서 선언하지 않은 필드이지만 부모 클래스에서 상속받았으므로 에러나지 않는다.
Object 클래스
- 모든 클래스의 부모 클래스
- 자바의 모든 클래스는 자동으로 Object 클래스의 모든 필드와 메소드를 상속받음 (extends 키워드 사용하지 않아도 됨)- - 해당 인스턴스의 정보를 문자열로 반환하는 toString() , 값을 비교하는 equals() , 새로운 인스턴스를 생성해 반환하는 clone()
'til > Java' 카테고리의 다른 글
추상 클래스(abstract class) (0) | 2022.04.24 |
---|---|
메소드 오버라이딩(method overriding) (0) | 2022.04.23 |
Package와 import (0) | 2022.04.14 |
문장을 입력 받아 역순으로 출력하기 (0) | 2022.03.23 |
유효성 검사 (0) | 2022.03.23 |