- 제한자(Modifier)
제한자(Modifier)
같은 클래스 같은 패키지 상속된 개체 그외
접근 제한자 : private < (default) < protected < public
(default) : 접근제한자 구현 안됨.
멤버의 접근의 허용범위를 설정해주는 제한자
그외 제한자 : static, abstract(추상클래스나 추산메서드를 만듬), final
=================================================================================
- private 접근제한자 설정 : 동일 클래스내에서만 접근 허용
- default 접근제한자 : 동일 패키지 내에서만 접근 허용
- protected 접근제한자 : 상속된 개체에서만 접근 허용
- public 접근제한자 : 그외. 무조건 접근을 허용한다.
📌
package chap7;
import chap7.test.Modifier2;
class Modifier{
private int v1 = 100; //private 접근제한자 설정 : 동일 클래스내에서만 접근 허용
int v2 = 200; //default 접근제한자 : 동일 패키지 내에서만 접근 허용
protected int v3 = v1;//protected 접근제한자 : 상속된 개체에서만 접근 허용
public int v4 = v2; //public 접근제한자 : 그외. 무조건 접근을 허용한다.
public void method() {
System.out.println("chap7.Modifier 클래스의 method()");
System.out.println("v1="+v1);
System.out.println("v2="+v2);
System.out.println("v3="+v3);
System.out.println("v4="+v4);
}
}
public class ModifierEx1 {
public static void main(String[] args) {
Modifier m = new Modifier();
//오류. System.out.println("m.v1="+m.v1); // 현재 v1 변수는 Modifier 클래스 내에서만 접근 가능함
System.out.println("m.v2="+m.v2); //Modifier, ModifierEx1가 같은 패키지안에 있기 때문에 가능
System.out.println("m.v3="+m.v3);
System.out.println("m.v4="+m.v4);
m.method();
Modifier2 m2 = new Modifier2(); //ModifierEx1 클래스아 다른 패키지의 클래스.
//오류. System.out.println("m2.v1="+m2.v1);//private 접근 불가(같은 클래스가 아니여서)
//오류. System.out.println("m2.v2="+m2.v2);//default 접근 불가(같은 패키지가 아니여서)
//오류. System.out.println("m2.v3="+m2.v3);//protected 접근 불가(상속관계가 아니여서)
System.out.println("m2.v4="+m2.v4);//무조건 접근 허용
System.out.println(m2);//m2.toString()호출
}
}
- 접근제한자
접근제한자 : 멤버의 접근 허용범위를 지정해주는 제한자.
private < (default) < protected < public
- 변수,상수,메서드 : private,(default),protected,public
- 생성자 : private,(default),protected,public
- 생성자 :private => 클래스의 객체를 나만 만들거야
Math 클래스 생성자의 접근 제한자가 private
Math 클래스의 모든 멤버는 static.(클래스 멤버다)
(생성자의 접근제한자를 이용하여 객체 생성을 못하게 할 수 있다)
- 클래스 : (default),public 가능
파일명은 public 클래스의 이름과 같아야 한다.
하나의 파일에는 public 클래스가 한개만 가능하다.
📌
package chap7;
import chap7.test.Modifier2;
// Modifier3,Modifier2 클래스의 패키지가 다르다.
class Modifier3 extends Modifier2{
void method() {
// System.out.println("v1="+v1);// Modifier2 클래스 외에는 접근 불가.
// System.out.println("v2="+v2);// chap7.test에 속한 클래스에서만 접근 허용.
System.out.println("v3="+v3);// Modifier3가 Modifier2 하위클래스 (상속)이므로 접근가능
System.out.println("v4="+v4);// 모든 접근 허용
}
}
public class ModifierEx2 {
public static void main(String[] args) {
Modifier3 m= new Modifier3();
m.method();
//오류: System.out.println(m.v1);// Modifier2 클래스에서만 접근할 수 있으므로
//오류: System.out.println(m.v2);// 같은 클래스가 아니므로
//오류: System.out.println(m.v3);//다른 패키지고 상속관계가 아니므로
System.out.println(m.v4);
//오류: Math a= new Math();// 객체 생성 불가능. 생성자 접근제한자가 private
System.out.println(Math.random());
}
}
'수업(국비지원) > Java' 카테고리의 다른 글
| [Java] chap7 : 클래스의 관계 - 다형성(polymorphism)예제 (0) | 2023.04.15 |
|---|---|
| [Java] chap7 : 클래스의 관계 - 추상클래스 Shape (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - Instanceof연산자 (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - Pakage 패키지 예제 (0) | 2023.04.15 |
| [Java] chap7 : 클래스의 관계 - 오버로딩, 오버라이딩 (0) | 2023.04.15 |