[Java] 패키지와 접근제한자

JeongO·2023년 3월 1일
0

패키지 선언

  • 클래스 복사하려면 패키지 전체를 복사해야 함
  • 이름은 모두 소문자로
  • 숫자시작 안됨. _$ 제외 특수문자 안됨. java로 시작하면 안됨

패키지 생성

  • src폴더에서 패키지 생성
  • name 입력란에 상위패키지.하위패키지 로 작성

import문

  • 사용하려는 클래스나 인터페이스가 다른 패키지에 소속되어 있다면 import문으로 해당 패키지의 클래스 또는 인터페이스를 가져와 사용할 것임을 컴파일러에게 알려줘야 함
  • import 상위패키지.하위패키지.클래스이름’
  • import 상위패키지.하위패키지.*;
  • import문은 패키지 선언과 클래스 선언 사이에 작성
  • 상위 패키지를 import했다고 해서 하위 패키지까지 import되는 것은 아님
  • 자바는 패키지 전체 이름으로 패키지를 식별
  • 서로 다른 패키지에 동일한 클래스 이름이 존재하고, 두 패키지가 모두 import되었다면 컴파일러는 어떤 패키지의 클래스를 사용할 지 알 수 없다. 이 경우 정확하게 패키지가 포함된 클래스 전체 이름을 기술해야 한다.(한국타이어랑 금호타이어 패키지에 있는 각각의 타이어 클래스 import할 경우 패키지 이름부터 다 적어줘야함)

접근제한자

  • 접근 : 클래스 및 인터페이스, 이들이 가지고 있는 멤버 접근
  • 객체 생성 막으려면 생성자 호출하지 못하게 해야함(싱글톤)
  • public 외부 클래스 자유롭게 사용
  • protected 같은 패키지 또는 자식 클래스에서 사용 가능
  • default 같은 패키지에 소속된 클래스만 사용 가능
  • private 외부에서 사용 불가(같은 클래스 내에서만 사용가능)

클래스의 접근 제한

  • 클래스 접근 제한은 public, default 둘 중 하나

생성자의 접근 제한

  • 객체 생성 시 new 연산자로 생성자 호출
  • 생성자는 public, protected, default, private 접근제한자 다 가짐
  • 생성자 선언이 없어서 자동으로 생성되는 기본 생성자의 접근 제한은 클래스의 접근 제한과 동일하게 생성된다

싱글톤 패턴

  • 하나의 객체만 만들어야 하는 경우, 생성자를 private접근 제한으로 선언하고, 자신의 유일한 객체를 리턴하는 getInstacne( ) 정적 메소드를 선언하는 것

필드와 메소드의 접근 제한

  • 필드와 메소드도 4가지 접근 제한 모두 가능

Getter와 Setter메서드

  • 일반적으로 OOP에서는 객체의 필드를 객체 외부에서 직접적으로 접근하는 것을 막는다
  • 외부에서 마음대로 변경할 경우 객체의 무결성이 깨지기 때문 → 메서드를 통해 필드를 변경하는 방법 선호 (Setter) 필드는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 필드에 접근하려면 메서드를 통하도록 함 (메서드가 매개값을 검증해서 유효한 값만 객체의 필드로 저장할 수 있게 한다)
  • 반대로 필드값을 직접 사용하면 부적절한 경우도 있어, 메서드로 필드값을 가공한 후 외부로 전달하게 하는 메서드가 Getter
  • 클래스 선언시 가능하다면 필드를 private로 선언해서 외부러부터 보호하고, 필드에 대한 Getter와 Setter메서드를 작성해 필드값을 안전하게 변경,사용 하는 것이 좋다
  • get,set 메서드 이름 지을 때 getFieldName, setFieldName ← 필드명의 첫 글자는 대문자로!
  • 필드타입이 boolean일 경우 Getter는 get으로 시작하지 않고 is로 시작하는 것이 관례(Setter는 그냥 set으로 시작)
profile
IT'S YOUR VICTORY

0개의 댓글

관련 채용 정보