상속과 캡슐화

남승현·2022년 9월 6일
0
post-thumbnail

학습 목표

  • 상속 이해

  • 메서드 오버라이딩

  • supre, super()의 차이

  • 상속 개념 이해


📝 상속

  • 하위 클래스가 상위 클래스의 필드와 메서드를 상속받는 것
  • 상위 클래스의 경우 하위 클래스가 공통적으로 가질 수 있는 것들을 선언
  • extends를 통해 상속을 진행할 수 있음
  • 자바는 단일 상속을 지원
class Student extends Human{...}

📝 상속의 특징

  • 하위 클래스 멤버의 수는 상위 클래스 멤버의 수와 크거나 같음
    • 상위 클래스의 멤버를 상속받기 때문
  • 코드의 재사용성이 향상됨
    • 상위 클래스의 멤버 변수를 재활용하기 때문
  • 다형적 표현이 가능
  • private 접근제어자는 상속하지 않음
  • Object 클래스가 최상위 클래스로 상속 클래스가 지정되지 않는 경우 컴파일러가 Object 클래스를 상속시킴
  • 부모와 자식이 다른 패키지에 존재하는 경우 default 접근제어자는 상속 불가능 (접근제어자의 범위 문제)
  • final 상태의 클래스는 상속이 불가능함
  • final 상태의 메소드는 오버라이딩을 통한 재정의 불가능

📝 메서드 오버라이딩

  • 상위 클래스의 메서드를 재정의 하는 것
  • 상위 클래스의 메서드 선언부 (반환 타입, 이름, 매개 변수)가 동일 해야함
  • 상위 클래스의 접근 제어자의 범위보다 하위 클래스의 범위가 크거나 같아야함
  • 상위 클래스보다 더 많은 예외처리를 할 수 없음
    • 상위 클래스에 2개의 예외처리가 존재하는 경우, 해당하는 2개의 예외에 대해서만 예외처리 가능

📝 super vs super()

  • this와 this()의 차이와 유사함.
  • super의 경우 상위 클래스를 참조, super()의 경우 상위 클래스의 생성자를 참조

📝 캡슐화

  • 특정 객체안에 관련 속성 및 기능을 담아 외부로부터 보호
  • 데이터 보호의 목적
  • 내부적으로 사용되는 데이터의 불필요한 외부 노출을 방지
  • 정보은닉

📝 접근 제어자

  • private : 동일 클래스만 허용
  • default : 동일 패키지만 허용
  • proteced : 동일 패키지 + 하위 클래스 허용
  • public : 모두 허용
  • 제어자의 경우 접근 제어자, 기타 제어자가 존재하며 여러개의 제어자를 사용할 수 있으나 접근 제어자는 하나만 적용가능
profile
활발한 개발자

0개의 댓글