Java

[Java] 패키지, 접근제어자: public, private, protected

eyoo 2022. 7. 4. 10:03

패키지는 폴더 혹은 디렉토리와 같은 개념이다.

 

패키지를 하나 만들어보자.

 

# 패키지 이름의 첫글자는 소문자로 작성해야 한다.

 

 

myPack 안에 test라는 이름의 패키지 생성하자.

 

# 생성하려고 하는 위치(패키지) 뒤에 온점 ' . '을 찍고 생성하려는 패키지의 이름을 쓰면된다.

 

 

myPack 패키지 안에 test패키지가 생성된다.

 

 

 

만들어진 test패키지에 Member 클래스를 만들었다. 

 

package myPack.test;

public class Member {
	 String name;
	 String num;
}

# 패키지가 두개이상에서 다른 폴더에서 클래스가 있으면 package 키워드로 위치가 어딘지 알려줘야 한다.

# 보통은 툴이 자동으로 알려준다.

 

 

메인클래스에서 멤버클래스의 생성자를 호출해본다.

 

package myPack;

public class PackMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 친구 전화번호를 저장하기 위한 Member 객체 생성하기
		Member m1 = new Member();
	}
}

 

 

그러면 에러가 발생하는데 Member 에 커서를 놓으면 'member cannot be resolved to a type' 으로 나온다.

 

 

에러문구 밑에있는 import 'Member' (myPack.test)를 선택해서 다른 패키지에 들어있던 Member클래스를 임포트한다.

 

package myPack;

import myPack.test.Member;

public class PackMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 친구 전화번호를 저장하기 위한 Member 객체 생성하기
		Member m1 = new Member();
	}
}

 

# 임포트되었다.

 

 

이제 메인에서 데이터를 입력한다.

 

# 오류가 발생하며 엑세스되지 않는다.

 

 

객체를 생성 후 데이터를 세팅하려면 따로 접근제어자를 사용해야한다.

 

메인에서 생성자를 사용하여 데이터를 세팅하기 위해 멤버클래스에서 public을 활용하자.

 

	 public Member(String name, String phone) {
		this.name = name;
		this.phone = phone;
	}
	 
	 public Member(){
		
	}

 

# public을 사용하면 다른 패키지에 있더라도 해당 코드에 접근할수있다.

 

 

# public외에도 다른 패키지에 있더라도 상속관계일때 접근할수있는 protected

# 같은 클래스에서만 접근할수있는 private,

# 같은 패키지일때 접근할수있는 디폴트가 있다. (디폴트는 접근제어자 키워드를 아무것도 입력하지 않은상태)