상속(nheritance)

부모가 자식에게 물려주는 행위. 

자식은 상속을 통해 부모가 물려준 것을 자연스럽게 이용 가능. 상위 클래스, 하위 클래스

부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외, 부모와 자식 클래스가 다른 패키지 내에 존재한다면 default 접근 제한 갖는 필드와 메소드도 상속 대상에서 제외


- 클래스 상속 : 자식 클래스 선언 할 때 어떤 부모 클래스를 상속받을 것인지 결정하고 선택된 부모 클래스는 extends 뒤에 기술. 다중 상속 허용 안 함

- 부모 생성자 호출 : 부모 객체가 먼저 생성되고 자식 객체가 그 다음에 생성됨 -> 모든 객체는 클래스의 생성자 호출해야만 생성됨

- super() : 부모의 기본 생성자 호출, 즉 첫번째 생성자 메소드 호출함. 매개변수 있을 시 같은 타입의 부모 생성자 호출

 

 

메소드 재정의 : 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 함. -> 메소드 오버라이딩

@Override :  상속된 메소드의 내용이 자식 클래스와 맞지 않을 경우, 자식 클래스에서 동일한 메소드를 재정의 하는 것
메소드를 오버라이딩 되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드 호출하면 오버 라이딩  된 자식 메소드 호출됨


- 부모 메소드와 같은 시그너처(리턴 타입, 메소드 이름, 매개 변수 리스트) , 접근 제한을 더 강하게 오버라이딩 불가, 새로운 예외(Exception)를 throw 할 수 없음

 

부모 메소드 호출

- super() : 자식 클래스에서 부모 클래스 메소드 오버라이딩 하게 되면, 부모 클래스의 메소드 숨겨지고, 오버라이딩 된 자식 메소드만 사용 -> super. 부모 메서드();

- 부모 객체 참조하기 때문에 부모 메소드 직접 접근 가능

 


- final : 클래스, 필드, 메소드 선언 시 사용할 수 있음. 해당 선언이 최종 상태, 수정될 수 없음


- final 클래스 : 상속 할 수 없음 

-> 부모 클래스 될 수 없고 자식 클래스 만들 수 없음 ex) public final class 클래스 이름{}


- final 메소드 : 오버 라이딩할 수 없음 -> 부모에서 선언된 메소드는 자식 클래스에서 재정의 할 수 없음                     ex) public final 리턴 타입 메소드 () {}

- protected : public과 default 접근 제한의 중간 쯤 위치, 같은 패키지 내에서는 접근 제한 없지만 다른 패키지에서는 자식 클래스만 접근 허용

'JAVA' 카테고리의 다른 글

배열 예제_숫자 출력  (0) 2019.06.18
상속_2(다형성, 추상 클래스)  (0) 2019.06.18
클래스_5(패키지)  (0) 2019.06.18
클래스 예제_계산기  (0) 2019.06.18
클래스 예제  (0) 2019.06.18

+ Recent posts