Java

[Java] 상속, final, 자동 형변환

반응형

상속이란?

  • 부모 클래스의 필드와 메서드를 자식 클래스에게 물려주는 것
  • 필드와 메서드를 재사용해 코드의 중복 줄여줌
  • 부모 클래스만 수정하면 상속받는 자식 클래스도 영향받기 때문에 수정 횟수도 최소화됨
  • 부모 클래스에서 private로 필드나 메서드를 선언하면 상속이 불가능함
  • 부모 클래스와 자식 클래스가 다른 패키지에 존재하면 기본 접근 제한으로 선언된 필드와 메서드는 상속 대상에서 제외됨

 

  • 자식 객체 생성 시 부모 객체가 먼저 생성된다.
  • 부모 생성자는 자식 생성자의 제일 첫 줄에서 호출된다.(아래의 super())
class BJ {
	String name;
	BJ(String name) {
		this.name = name;
	}
}

class Temp extends BJ {
	int num;

	Temp(String name, int num) {
		super(name);
		this.num = num;
	}
}

 

  • 부모 클래스에 기본 생성자가 없으면 자식 클래스의 생성자에서 super()로 부모 생성자를 호출해야 함!

 

 

메서드 재정의(@Override)

부모 클래스의 메서드를 재정의해야 하는 경우 자식 클래스에서 변경해야 한다.

-> 이때, 메서드 오버라이딩을 사용함!

 

  • 부모의 메서드와 동일한 매개변수, 리턴 타입, 메서드명으로 선언해야 한다.
  • 새로운 예외를 추가할 수 없음

 

  • 부모 클래스의 메서드를 오버라이딩하면, 부모 클래스의 메서드는 제쳐두고 오버라이딩된 자식 메서드를 사용한다.
  • 재정의된 메서드는 super()를 사용해 아래처럼 사용 가능하다.
super.fuction();

 

 

final 클래스와 메서드

  • final을 붙이면 마지막 상태이기 때문에 수정이 불가능
  • 부모 클래스가 될 수 없어 자식 클래스를 만들 수 없음
  • final 메서드는 최종 상태이기 때문에 오버라이딩으로 수정이 불가능

 

 

자동 형변환

  • 제일 최상위 클래스는 자신을 상속받는 클래스로 선언이 가능함

-> 하위 객체는 상위 객체로 자동 형변환 된다!

 

ex) A <- B

A a1 = new B();
  • 부모 타입으로 자동 형변환되면 부모 클래스의 필드와 메서드만 접근 가능함

 

 

출처

 

 

반응형