상속
매 클래스마다 중복된 필드, 메소드들을 하나의 클래스(부모)로 정의해둔 후에 다른 클래스(자식)에서 해당 부모 클래스의 내용들을 가져다 쓰는 개념
상속의 장점
- 보다 적은 양의 코드로 새로운 클래스들을 관리 가능하다
- 중복된 코드를 부모 클래스에서 공통적으로 관리하기 때문에 새로운 코드를 추가하거나, 기존의 코드를 수정하는데에 용이하다
- 프로그램의 생산성을 높여준다. 유지보수에도 크게 기여한다
상속의 특징
- 클래스간의 상속은 다중 상속이 불가능하다(단일 상속만 가능)
- 명시되어있지는 않지만 자바에서 제공하는, 또는 내가 만든 모든 클래스는 Object라는 클래스의 후손이다
- Object 클래스에 있는 메소드를 그대로 가져다 쓸 수 있음
- Object 클래스에 있는 메소드가 맘에 안든다면 내 입맛대로 오버라이딩해서 쓸 수도 있음
오버라이딩
- 상속받고있는 부모클래스의 메소드를 자식클래스에서 재정의하는 것
- 부모가 제공하고있는 메소드를 자식이 일부 고쳐서 사용하겠다라는 의미
- 호출 시 자식메소드가 우선권을 가진다(동적바인딩)
오버라이딩의 성립 조건
- 부모메소드의 메소드명과 동일해야한다
- 매개변수의 자료형, 개수, 순서가 동일해야 한다(단, 매개변수명은 무관)
- 반환형이 같아야 한다
- 부모메소드의 접근제한자보다 범위가 같거나 공유 범위가 더 커야 함⇒ 규약의 개념이 들어가있음( 재정의 하려면 적어도 이정도의 규칙은 지켜야 한다)
@Override : 어노테이션
생략 가능(명시하지 않아도 부모메소드와 형태가 같다면 오버라이딩이 잘 된 것)
굳이 붙이는 이유?
- 메소드를 잘못 작성했을 경우 오류를 알려주기 때문에 다시 검토할 수 있게 유도한다
- 혹시라도 부모메소드가 후에 수정되었을 경우도 오류로 알려주기 때문에 다시 한 번 검토할 수 있게끔 유도해준다
- 이 메소드가 오버라이딩 된 메소드라는걸 알리고자 하는 목적
모든 클래스는 Object 클래스의 후손이다
즉, 자바에서 최상위클래스는 항상 Object ⇒ Object에 있는 메소드들은 어느 클래스를 만들던간에 다 가져다 쓸 수 있음
마음에 안들면 오버라이딩을 통해서 재정의도 가능
'JAVA' 카테고리의 다른 글
[JAVA] 인터페이스 (0) | 2022.02.28 |
---|---|
[JAVA] 추상클래스 (0) | 2022.02.28 |
[JAVA] getter와 setter (0) | 2022.02.24 |
[JAVA] 객체와 클래스 (0) | 2022.02.22 |
[JAVA] 객체 지향 프로그래밍(OOP) (0) | 2022.02.19 |