-
[java] 패키지와 접근제한자(public,protected/default/private)java 2023. 1. 19. 16:55
패키지는 비슷한 성격의 자바 클래스들을 모아놓은 자바의 디렉토리이다.
house패키지 내부에 HouseKim, HousePark 클래스가 있고, person은 house패키지의 서브패키지이다. person패키지 내부에는 EungYongPark클래스가있다.
패키지 사용하기
HouseKim패키지 내부에 있는 클래스(HousePark)이 HouseKim클래스를 사용한다면 import를 따로할필요 없다.
외부 클래스에서 HouseKim클래스를 사용하려면 import를 해야한다.
import house.HouseKim; public class Sample{ public static void main(String[] args) { HouseKim kim = new HouseKim(); } }
import house.*; //house패키지 내 모든 클래스를 사용할 수 있다.
패키지를 사용하는 이유
- 비슷한 성격의 클래스들끼리 묶을 수 있어 클래스 분류가 용이함.
- 패키지명이 다르면 클래스명이 동일해도 충돌없이 사용가능
접근제어자
자바는 접근제어자를 사용하여 변수나 메소드의 사용권한을 설정한다.
접근제어자
1. private
2. default
3. protected
4. public
접근제어자는 private ->default ->protected-> public순으로 많은 접근을 허용한다.
private
private이 붙은 변수,메소드는 오직 해당클래스 내에서만 접근이 가능하다.
default
접근 제어자를 별도로 설정하지 않았을때 자동으로 설정되는 접근제한자이며,
default가 붙은 변수,메소드는 해당 패키지 내에서만 접근이 가능하다.
상속받고 어떻게하더라도 해당패키지가 아니면 접근이 불가능하다.
package house; public class HouseKim { String lastname = "kim"; //default } ____________________________________________________________ package house; public class HousePark { String lastname = "park"; public static void main(String[] args) { HouseKim kim = new HouseKim(); 같은 패키지이기때문에 접근가능 (default) System.out.println(kim.lastname); } }
protected
protected가 붙은 변수, 메소드는
동일 패키지의 클래스, 혹은 다른패키지 클래스에서 사용하려는 해당클래스를 상속받는경우 접근가능
package house; //하우스패키지 public class HousePark { protected String lastname = "park"; } ________________________________________________________________________ package house.person; //house의 서브패키지 import house.HousePark;//외부클래스를 사용하려면 import해주어야함 public class EungYongPark extends HousePark {//house패키지의 HousePark클래스를 상속 public static void main(String[] args) { EungYongPark eyp = new EungYongPark(); System.out.println(eyp.lastname); //다른패키지지만 사용할려는 클래스를 상속받았기때문에 사용가능함 } }
public
어떤 클래스에서든 접근가능하다.
'java' 카테고리의 다른 글
[java] 예외처리 (Exception), 트랜잭션 (0) 2023.01.20 [java] this, static, 싱글톤, final, 상수 (0) 2023.01.19 [java] 입출력 ( 콘솔입출력, 파일입출력) (0) 2023.01.18 [java] 추상클래스 (0) 2023.01.17 [java] 인터페이스의 다형성과 다중상속 (0) 2023.01.17