접근 제한자
접근 제한자(access modifier)는 클래스, 필드, 메서드, 생성자에 대한
접근 권한을 제한하는 키워드이다.
자바에서는 다음과 같은 네 가지의 접근 제한자가 있다.
public, : 모두 접근가능
protected, : 같은 패키지 내 가능, default보다 주로 사용됨
default, : void 앞에 아무것도 붙지않으면 void
private : 같은 클래스 내에서만 접근이 가능하다.
같은 클래스 내의 경우의 코드
package day07.modi.pac1;
public class A {
// 필드
public int f1;
int f2; // default 제한
private int f3;
// 메서드
public void m1() {}
void m2() {} // default 제한
private void m3() {}
// 생성자
public A(int a) {}
A(double b) {}
private A(boolean c) {}
void test() {
this.f1 = 10;
this.f2 = 10;
this.f3 = 10; // 같은 클래스 내에서는 public 이든 default 든 private 이든 다 okay.
m1();
m2();
m3();
new A(10); // public
new A(5.5); // default
new A(false); // boolean
}
}
같은 패키지내 다른 클래스일 경우
package day07.modi.pac1;
import day04.Dancer;
import day07.modi.pac2.C;
public class B {
public int z1;
int z2;
private int z3;
void test() {
A a1 = new A(50); // public
A a2 = new A(5.55); // default
// A a3 = new A(true); // private
a1.f1 = 20; // public
a1.f2 = 50; // default
C c = new C();
c.y1 = 10;
// c.y2 = 20;
// c.y3 = 30;
Dancer dancer = new Dancer(); // default 다른패키지라 안됨 public 이되면 사용가능
dancer.dance(); // Dancer에 public이 되어도 dance에 public이 되야함
}
}
패키지까지 다를 경우
package day07.modi.pac2;
import day04.Dancer;
import day07.modi.pac1.A;
import day07.modi.pac1.B;
public class C {
public int y1;
int y2;
private int y3;
void test() {
A a = new A(100);// public
// new A(3.14); // default
// new A(false); // private
a.f1 = 10; // public
// a.f2 = 20; // default
// a.f3 = 30; // private
a.m1();
// a.m2();
// a.m3();
new B();
}
}
'Java' 카테고리의 다른 글
[중앙정보처리학원] Java* 사용 제한자 static (0) | 2024.04.22 |
---|---|
[중앙정보처리학원] Java* 객체지향 캡슐화(encapsulation) (0) | 2024.04.22 |
[중앙정보처리학원] Java* 객체지향 상속 (Inheritance) (0) | 2024.04.22 |
[중앙정보처리학원] Java* 객체지향 Practice (0) | 2024.04.18 |
[중앙정보처리학원] Java* 객체지향 생성자, 접근제한자 (1) | 2024.04.18 |