[Java] 패키지, 접근제어자: public, private, protected
패키지는 폴더 혹은 디렉토리와 같은 개념이다.
패키지를 하나 만들어보자.
# 패키지 이름의 첫글자는 소문자로 작성해야 한다.
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,
# 같은 패키지일때 접근할수있는 디폴트가 있다. (디폴트는 접근제어자 키워드를 아무것도 입력하지 않은상태)