230227 상속, 캡슐화

허크·2023년 2월 27일
0

상속


상속

기존의 클래스를 확장하여 새로운 클래스를 생성하는 것을 말한다.

  • 상속을 통해 부모 클래스의 변수와 메서드를 자식 클래스에서 사용할 수 있다.



포함 관계

클래스의 멤버로 다른 클래스 타입의 참조변수를 선언하는 것

  • 부모 클래스와 자식 클래스의 관계가 상속은 (is-a), 포함은 (has-a) 관계이다.



메서드 오버라이딩

상위클래스로부터 상속받은 메서드와 동일한 이름의 메서드를 재정의

  • 메서드 오버라이딩의 3가지 조건
    1. 메서드의 선언부(메서드 이름, 매개변수, 반환타입)가 상위클래스의 해당부분과 완전히 일치해야 한다.
    2. 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 한다.
    3. 예외는 상위 클래스의 메서드 보다 많이 선언할 수 없다.
      (2,3번 조건의 개념은 차후에 설명예정)



super, super()

  • 이전에 배웠던 this, this()와 유사

  • super는 상위클래스의 객체, super()는 상위 클래스의 생성자를 호출

  • 하위클래스 생성시 super()를 호출하여 상위 클래스의 생성자를 초기화해야함
    -> 클래스를 만들 때는 기본 생성자를 생성하는 것을 습관화



Object 클래스

  • 클래스 상속계층도에서 최상위에 위치한 상위클래스
    -> 자바의 모든 클래스는 Object 클래스로부터 확장된다 = 항상 참인 명제

  • 가장 위에 위치하기 때문에 멤버들을 자동으로 상속받아 사용할 수 있음

    • 대표적인 object 메서드 예시 : toString(), equals(Object obj), hashcode(), wait(), notify()






캡슐화


패키지

package practice.test;

public class PackageEx {}
  • 자바 기본패키지 : java.lang(기본클래스), java.util(확장클래스), java.io java.nio(자바 입출력 관련 클래스)

    ex) String => java.lang.String (java.lang -> 패키지명, . -> 디렉터리 계층구조 의미)

Import 문

  • 다른 패키지 내의 클래스를 사용할때 사용

  • import 패키지명.클래스명; 또는 import 패키지명; 으로 사용

  • import문은 성능에 영향x (컴파일시 처리됨)


  • 예시 1 : import문을 미사용한 경우
package practice.test2; 

public class PackageImp{
	public static void main(String[] args) {
    	practice.test.ExamImport exam = new practice.test.ExamImport(); 
        // 패키지명 모두 포함해야함
    }
}
  • 예시 2 : import문 사용한 경우
package practice.test2; 

import practice.test.ExamImp // import문 작성

public class PackageImp {
	public static void main(String[] args) {
    	ExamImp x = new ExamImp(); // 패키지명 생략가능
    }
}




접근 제어자


제어자(Modifier)

클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드

  • 2가지로 분류

    • 접근 제어자 : public, protected, (default), private
    • 기타 제어자 : static, final, abstract 등
  • 접근 제어자는 단 한번만 사용가능

접근 제어자(Access Modifier)

  • 클래스 외부로의 불필요한 데이터 노출 방지(data hiding)

  • 외부로부터 데이터가 임의로 변경되는걸 방지

  • 4가지 분류 (public > protected > default > private)

    1. private : 동일 클래스 내
    2. default : 동일 패키지 내
    3. protected : 동일 패키지 + 다른 패키지 하위 클래스
    4. public : 접근 제한 無

getter, setter

  • setter 메서드(set-) : 외부에서 메서드에 접근하여 조건에 맞을 경우 데이터 값을 변경 가능하게 해줌

  • getter 메서드(get-) : 위에서 설정한 변수값을 읽어오는 데 사용

  • 데이터를 효과적으로 보호 + 동시에 의도하는 값으로 변경

profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글