본문 바로가기

Java

Java Class 접근제한자

Class 는 public 과 default(friendly 또는 package 제한자로 불림) 제한자 사용

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ cat src/pkg1/ModuleDefault.java
package pkg1;

class ModuleDefault {
	void method_default() {
		System.out.println("Default method of Module1");
	}
}

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin src/pkg1/ModuleDefault.java

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ tree
.
├── bin
│   └── pkg1
│       └── ModuleDefault.class
└── src
    ├── main
    │   └── Main.java
    ├── pkg1
    │   └── ModuleDefault.java
    └── pkg2
        └── ModulePublic.java

6 directories, 4 files

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin -cp bin src/main/Main.java
src/main/Main.java:3: error: ModuleDefault is not public in pkg1; cannot be accessed from outside package
import pkg1.ModuleDefault;
           ^
src/main/Main.java:7: error: cannot find symbol
		ModuleDefault module = new ModuleDefault();
		^
  symbol:   class ModuleDefault
  location: class Main
src/main/Main.java:7: error: cannot find symbol
		ModuleDefault module = new ModuleDefault();
		                           ^
  symbol:   class ModuleDefault
  location: class Main
3 errors

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin src/pkg1/ModuleDefault.java
ihongjun@ihongjun-ui-iMac:~/Funny/Test$ tree
.
├── bin
│   └── pkg1
│       └── ModuleDefault.class
└── src
    ├── main
    │   └── Main.java
    ├── pkg1
    │   └── ModuleDefault.java
    └── pkg2
        └── ModulePublic.java

6 directories, 4 files

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ cat src/main/Main.java
package main;

import pkg1.ModuleDefault;

class Main {
	public static void main(String[] args){
		ModuleDefault module = new ModuleDefault();
	}

}

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin -cp bin src/main/Main.java
src/main/Main.java:3: error: ModuleDefault is not public in pkg1; cannot be accessed from outside package
import pkg1.ModuleDefault;
           ^
src/main/Main.java:7: error: cannot find symbol
		ModuleDefault module = new ModuleDefault();
		^
  symbol:   class ModuleDefault
  location: class Main
src/main/Main.java:7: error: cannot find symbol
		ModuleDefault module = new ModuleDefault();
		                           ^
  symbol:   class ModuleDefault
  location: class Main
3 errors


ihongjun@ihongjun-ui-iMac:~/Funny/Test$ cat src/pkg2/ModulePublic.java
package pkg2;

public class ModulePublic {
	void method_default() {
		System.out.println("Default method of Module1");
	}
}

ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin src/pkg2/ModulePublic.java
ihongjun@ihongjun-ui-iMac:~/Funny/Test$ tree
.
├── bin
│   ├── pkg1
│   │   └── ModuleDefault.class
│   └── pkg2
│       └── ModulePublic.class
└── src
    ├── main
    │   └── Main.java
    ├── pkg1
    │   └── ModuleDefault.java
    └── pkg2
        └── ModulePublic.java

7 directories, 5 files
ihongjun@ihongjun-ui-iMac:~/Funny/Test$ javac -d bin -cp bin src/main/Main.java
ihongjun@ihongjun-ui-iMac:~/Funny/Test$

'Java' 카테고리의 다른 글

Java 내부클래스(Inner Class)  (0) 2014.12.24
Java 캡슐화(Encapsulation)  (0) 2014.12.24
Java 라이브러리 사용  (0) 2014.12.18
Java 다형성 - 인터페이스 & 상속  (0) 2014.12.18
Java 컴파일  (0) 2014.12.17