[Java] - 상속

chancehee·2022년 12월 6일
0

자바

목록 보기
5/12
post-thumbnail

0. 글을 작성하는 이유

객체지향 언어의 특징 중 하나인 상속에 대해서 자세히 알아보기 위해서 이 글을 작성합니다.

1. 상속(Inheritance)

  • 기존 클래스의 자산(멤버)을 자식 클래스에서 재사용하기 위한 것 입니다.
    (부모의 생성자와 초기화 블록은 상속하지 않습니다.)
  • 기존 클래스의 멤버를 물려 받기 때문에 코드의 절감 효과가 있습니다.
    (부모의 코드를 변경하면 모든 자식들에게도 적용이 됩니다. -> 유지 보수성 향상)
  • 상속을 받을 때는 extends 키워드를 사용합니다.
// 조상 클래스 - 부모 클래스, 상위 클래스, 슈퍼 클래스
public class Car {
	String name;
    
    void drive() {}
}

// 자식 클래스 - 자손 클래스, 하위 클래스, 서브 클래스 
public class FastCar extends Car {
	boolean fastMode;
    
    void fastDrive() {}
}

public class fastCarTest {
	public static void main(String[] args) {
    	FastCar fcar = new FastCar();
        fcar.drive(); // Car
        fcar.fastDrive(); // FastCar
    }
}
  • 상속의 관계는 is a 관계라고 합니다.
    (예: Car is a Object, FastCar is a Car)
  • Java에서는 단일 상속만을 지원합니다.
  • 대신 interface와 포함 관계(has a)로 단점을 극복합니다.

2. Object 클래스

  • 모든 클래스의 조상 클래스입니다.
  • 별도의 extends 선언이 없는 클래스들은 extends Objext가 생략된 것 입니다.
  • 따라서 모든 클래스에는 Object 클래스에 정의된 메서드가 존재하고 사용 가능합니다.

대부분 클래스에서 재정의 해서 사용합니다.
hashCode(): int
equals(obj: java.lang.Object): boolean
toString(): java.lang.String

주로 멀티 스레드 프로그래밍에서 사용합니다.
notify(): void
notifyAll(): void
wait(timeout: long): void
wait(timeout: long, nanos: int): void
wait(): void

0개의 댓글