-
java 접근제한자(Public, protected, default, private)Java 기초 2018. 12. 27. 13:58
Public
클래스가 같건 다르건, 패키지가 같건 다르건 모두 접근 허용 가능
같은 클래스내에서 허용
123456789101112131415161718192021222324package packageTestA;public class A {public String field;public A() {}public void method() {System.out.println("클래스 A의 method");}}class A1 {public void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 같은 패키지 내의 다른 클래스 허용
123456789101112package packageTestA;public class B{public void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 다른 패키지의 다른 클래스에서 허용
1234567891011121314package packageTestB;import packageTestA.A;public class C {public void method() {A a = new A(); // (o)a.field = "value"; // (o)a.method(); // (o)}}cs Default (앞에 생략이 되어있으면 기본적으로 default)
같은 패키지에서만 접근 허용
같은 클래스 내에서 허용
1234567891011121314151617181920212223package packageTestA;public class A {String field;A() {}void method() {System.out.println("클래스 A의 method");}}class A1 {void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 같은 패키지 내의 다른 클래스에서 허용
123456789101112package packageTestA;public class B{public void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 다른 패키지에서는 접근 불가
1234567891011121314package packageTestB;import packageTestA.A;public class C {public void method() {A a = new A(); // (x)a.field = "value"; // (x)a.method(); // (x)}}cs Protected
같은 패키지에서만 접근 허용하고 다른 패키지에서 접근하려면 상속받을 시에만 가능
같은 클래스내에서 접근 허용
123456789101112131415161718192021222324package packageTestA;public class A {protected String field;protected A() {}protected void method() {System.out.println("클래스 A의 method");}}class A1 {void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 같은 패키지의 다른 클래스에서 접근 허용
123456789101112package packageTestA;public class B{public void method() {A a = new A(); //(o)a.field = "value"; //(o)a.method(); //(o)}}cs 다른 패키지의 상속받은 클래스 접근 허용
12345678910111213141516package packageTestB;import packageTestA.A;public class D extends A {// protected로 보호받는 A를 상속 받음public D() {super(); // (o)// 부모클래스 생성자 호출this.field = "value"; // (o)this.method(); // (o)}}cs 다른 패키지의 다른 클래스 접근 불가
1234567891011121314package packageTestB;import packageTestA.A;public class C {public void method() {A a = new A(); // (x)a.field = "value"; // (x)a.method(); // (x)}}cs Private
같은 클래스 내에서만 접근 허용
private는 한 java 파일 안의 서로 다른 클래스라도 사용하지 못한다.
private로 선언된 필드값에 접근하기 위해서는 아래의 코드처럼 setter 메소드로 접근하고
getter 메소드로 값을 불러와야한다.
12345678910111213141516171819202122232425262728package packageTestA;public class A {private String field;public A() {}private void method() {System.out.println("클래스 A의 method");}String getField() {return field;}void setField(String field) {this.field = field;}}class A1 {void method() {A a = new A();a.setField("value");System.out.println(a.getField());}cs 'Java 기초' 카테고리의 다른 글
업캐스팅 (0) 2019.01.03 상속의 타입(형) 변환 (0) 2019.01.03 메소드 재정의 Override (0) 2018.12.27 상속의 기본 개념 (0) 2018.12.27 class를 이용한 연습문제 (이것이 자바다 6장 20번) (0) 2018.12.26 댓글