본문 바로가기
개발/자바

자바 상속

by kakk789 2021. 12. 27.

자바 상속

public class 클래스명 extends 상속클래스명 {

}
  • A 클래스의 내용을 B클래스에서 그대로 상속받아 사용할 수 있음.
  • 상속 관계에 있을 경우 자식의 객체 생성하면 부모의 생성자가 먼저 동작하고 자식의 생성자가 후에 동작한다.
  • 한마디로 상속 관계에 있을 때에는 자식 클래스는 부모클래스의 생성자 형식을 그대로 따온 생성자를 만들어야 한다. (당연한 말이지만 헷갈릴 수 있으니 주의)
  • 재사용성, 유지보수의 편의성, 가독성을 높임, 코드의 양을 줄임

super( ) 

  • 부모의 생성자를 요구하는 메소드, 반드시 첫번째 줄에 와야함.
  • super는 부모의 생성자를 요구하는 것이니까 부모의 생성자도 실행됌
  • 언제 사용하냐면, 부모클래스와 자식클래스에 '같은 이름 / 같은 인자 값'을 같는 메소드가 존재할 경우에 부모 클래스의 메소드를 사용하고 싶을 경우에 'super.메소드' 를 사용

Protected

  • 상속관계에 있을 때에 아무리 자식클래스라 할지라도 부모클래스의 private 영역에는 접근할 수 없음.
  • 그래서 외부의 다른 클래스로부터는 보호하되, 상속한 자식 클래스들에게는 접근을 허용하기 위한 protected를 사용

name만 protected로 설정 했을 경우

private으로 된 속성은 참조 못해서 에러 발생

 

Customer의 기본 생성자는 기본적으로 Person의 기본 생성자를 실행시킴

상속 관계에 있을 경우 부모 생성자가 먼저 실행
class Person{
	public Person() {
		System.out.println("Person의 생성자가 먼저 동작함");
	}
}
class Customer extends Person{
	public Customer() {
		//super(); // super()가 기본적으로 생략되어 있음
		System.out.println("Customer의 생성자는 나중에 동작함");
	}
}
public class PersonTest {

	public static void main(String[] args) {
		Customer c = new Customer();
	}
}
반응형

댓글