쫑쫑이의 블로그

객체지향 4대 특성 - 상속 (Inheritance) 본문

공부/JAVA

객체지향 4대 특성 - 상속 (Inheritance)

쫑쫑2 2022. 9. 6. 14:57

'캡상추다' 로 외웠던 기억이 있는 객체지향의 4대 특성

 

먼저 상속에 대해 알고 있었던 내용을 정리하면

 

상위 클래스에 하위 클래스의 공통 기능들을 정의하고
하위 클래스에서는 개별적인 기능 또는 공통 기능 재정의해서 재사용

 

오버라이딩은 상위 클래스의 메서드를 재정의하는 것
예를 들어 상위 클래스 동물은 걷는다

  • 하위 클래스 사람은 2발로 걷는다
  • 하위 클래스 말은 4발로 걷는다

오버라이딩과 오버로딩 항상 헷갈렸었다

 

=======================================================

 

오늘 상속에 대해 공부한 내용을 정리해보면

 

상위 클래스에 있는 멤버들을 하위 클래스에서 상속 받아 사용한다
하위 클래스는 상위 클래스의 모든 멤버들을 포함하고 더 많은 멤버를 가질 수 있다

 

메서드 오버라이딩
하위 클래스에서 상위 클래스에 상속 받은 메서드를 재정의 하는 것으로,

메서드 선언부가 일치해야한다 ( 메서드명, 매개변수, 반환타입 )

접근 제어자의 범위가 상위 클래스 메서드보다 같거나 넓어야한다

예외는 상위 클래스 메서드보다 많이 선언할 수 없다

 

하위 클래스는 하나의 상위 클래스로부터 상속을 받을 수 있다 ( 단일 상속 )
다른 내용을 상속 받고 싶으면 포함관계나 추상화 등을 사용하면 된다

 

포함관계는 주로 클래스안에 클래스를 변수로 가지게 하여 사용한다
A is B이면 상속을 하고 A has B이면 포함 관계를 사용한다

 

super는 this와 비슷하다
super는 부모 클래스를 참조한다
super() 메서드는 부모 클래스 생성자 메서드를 참조한다

this() 처럼 가장 윗줄에 적어준다

 

Object는 뒤에 extends 가 없는 모든 클래스들에 자동적으로 부모로 적용된다
그러므로 모든 클래스는 Object 클래스에 있는 내용을 참조할 수 있다

 

클래스에 final을 붙이면 상속 할 수 없다
메서드에 final을 붙이면 메서드 오버라이딩 할 수 없다