본문 바로가기
  • 개발자를 꿈꾸는 중
Java

자바 제어자(modifier) - 접근지정자

by 느보리 2022. 4. 21.
반응형

접근범위:

public

   같은 패키지 모든 클래스+ 다른 패키지 모든 클래스

protected

   같은 패키지 모든 클래스+ 다른 패키지 자식 클래스

default

  같은 패키지 모든 클래스

private

  같은 클래스

 

멤버

package water;
public class room{
	public int a;
	protected int b;
	int c;
	private int d;
    
	void water(){
    	// 모든 변수 사용가능
    }
}

package water;
class B{
 //a,b,c만 가능    같은 패키지라서 private 안됨
}




package fire;
class C {
	//a만 가능
}

package fire;
class D extends room{
	//a,b 만 가능          다른 패키지 다른/자식클래스라서
}

 

 

클래스

    public, default

    접근 범위는 위의 멤버와 같다

//예
package water;

class A {
}


package room;
import water.A;

class C {
 //A 클래스 선언 불가능
}

 

 

클래스/생성자

   클래스는 public, 생성자는 default일 경우

        => 클래스 import 가능 하지만 object 생성은 불가하다

package water;

public class A {
	A(){		//default
    }
}


package room;
import water.A;    // 가능

class C {
 public static void main(String [] arge){
 	A a = new A();  //불가능
 }
}

   클래스는 default, 생성자는 public일 경우

        => 클래스 import 불가능. object 생성도 할 수 없다.

 

 

Static

 - 객체생성 없이 사용 가능

class A{
    int k = 3;
    static int z =5;
    
    static void move() {
    	System.out.println("움직이다");
    }
    
    void fly() {
    	System.out.println("날다");
    }
    
    // 객체생성
    public static void main(String [] args) {
    	A a = new A();
        System.out.println(a.k);    //생성
        System.out.println(A.z); // 클래스.객체이름
        
        a.fly();		//객체 a 사용
        A.fly();		//객체없이 A에서 받아옴
    }
    
}

 

반응형

'Java' 카테고리의 다른 글

this/this()  (0) 2022.04.27
클래스(Class)  (0) 2022.04.27
String 참조자료형  (0) 2022.04.26
배열(1차원)  (0) 2022.04.25
제어 키워드(break, continue)  (0) 2022.04.25