자바 상속
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();
}
}
반응형
'개발 > 자바' 카테고리의 다른 글
다형성 (0) | 2021.12.27 |
---|---|
오버라이딩(Overriding) vs 오버로딩(Overloading) && toString, equals 오버라이딩 해보기 (0) | 2021.12.27 |
매개변수(parameter), 인자(argument) 차이점 (0) | 2021.12.26 |
생성자, this (0) | 2021.12.26 |
클래스, 인스턴스 (0) | 2021.12.26 |
댓글