본문 바로가기
study/Java

[Java] 23. 제한자 (접근제한자, 그외제한자)

by 금이패런츠 2022. 3. 21.
728x90
반응형
package chap7;

import chap7.test.ModifierEx2;

/*
 * 제한자
 *   접근제한자 : private < (default) < protected < public
 *   그외제한자 : static, abstract(추상클래스나 추상매서드를 만듬), final
 *   
 * 접근제한자 : 멤버의 접근 허용범위 지정해주는 제한자.
 * 
 * 변수, 메서드, 상수, 생성자 : private, (default), protected, public
 * class               :          (default),             public
 * 
 * 생성자의 접근 제한자를 이용하여 객체생성을 못하게 할 수 있다.
 * Math 클래스 : 생성자의 접근제한자가 private
 */
class Modifier {
	private int v1 = 100;
	        int v2 = 200; //default 생략되어있음.
    protected int v3 = v1;
    public int v4 = v2;
    public void method() {
    	System.out.println("chap.Modifier 클래스의 method() 메서드");
    	System.out.println("v1=" + v1);
    	System.out.println("v2=" + v2);
    	System.out.println("v3=" + v3);
    	System.out.println("v4=" + v4);
    }
}
class Modifier3 extends ModifierEx2 {
	public void method() {
//		System.out.println("v1=" + v1); //private : ModifierEx2 클래스내에서만 접근허용
//		System.out.println("v2=" + v2); //(default) : chap.test 패키지내에서만 접근허용
		System.out.println("v3=" + v3); //protected : 다른 패키지인 경우 상속관계에서 접근허용
		System.out.println("v4=" + v4); //public : 그 외 모든곳에서 접근허용
	}
}
public class ModifierEx1 {
	public static void main(String[] args) {
		Modifier m = new Modifier(); //생성자
//		System.out.println("m.v1=" + m.v1); //v1의 접근제한자가 private이므로 오류
    	System.out.println("m.v2=" + m.v2);
    	System.out.println("m.v3=" + m.v3);
    	System.out.println("m.v4=" + m.v4);
    	m.method();
    	
    	ModifierEx2 m2 = new ModifierEx2();
//    	System.out.println("m2.v1=" + m2.v1); //private : ModifierEx2 클래스내에서만 접근허용
//    	System.out.println("m2.v2=" + m2.v2); //(default) : chap7.test 패키지내에서만 접근허용
//    	System.out.println("m2.v3=" + m2.v3); //protected : 다른 패키지인 경우 상속관계에서 접근허용
    	System.out.println("m2.v4=" + m2.v4); //public : 그 외 모든곳에서 접근허용
    	System.out.println(m2);
    	
    	Modifier3 m3 = new Modifier3();
    	m3.method();
    	//Math 클래스의 모든 멤버는 static임.
//    	Math math = new Math(); //객체생성 불가. 생성자 접근 불가
	}
}
package chap7.test;

public class ModifierEx2 {
	private int   v1 = 10;
	int           v2 = 20;
	protected int v3 = 30;
	public    int v4 = 40;
	public String toString() {
		return v1 + "," + v2 + "," + v3 + "," + v4;
	}
}
728x90
반응형