[Java자바] 정보 은닉 | 접근

2월 16일
Test098.java

지시자 클래스 내에서 같은 패키지 상속받은 클래스 제외한 지역
사적인 영형 엑스 엑스 엑스
기본 영형 영형 엑스 엑스
보호 영형 영형 영형 엑스
공공의 영형 영형 영형 영형

공개 > 보호 > 기본값 > 비공개

※ 접근제어 지시자 == 접근 지시자 == 접근 변경자 == 접근 지정자 == 접근 변경자

import java.util.Scanner

class CircleTest2
{
	// 클래스 내부에 있는 변수
    // 멤버 변수, 인스턴스 변수, 전역 변수		// 클래스 변수(Ⅹ)
    // int num;
    
    // ↓
    
    // 정보 은닉
    private int num;
    
    // getter 구성
    int getNum()			// 값을 얻어다 쓸 수 있게하는 메소드
    {
    	return num;
    }
    
    // setter 구성
    void setNum(int num)	// 값을 세팅하게 하는 메소드
    {
    	this.num = num		// 매개변수 num을 지역변수 num에 대입.
    }
    
    void input()			// 반지름을 입력받아 지역변수 num에 대입하는 메소드 
    {
    	Scanner sc =  new Scanner(System.in);
        
        System.out.print("반지름 입력: " );
        num = sc.nextInt();
    }
    
    double calArea()		// 동일 패키지니까 num에 접근 가능. 
    {
    	return num * num * 3.141592;
    }
    
    void write(double area)		// 동일 패키지니까 num에 접근 가능.
    {
    	System.out.println("반지름 : " + num);
        System.out.println("넓이   : " + area);
    }    
}

public class Test098
{
	public static void main(String() args)
    {
    	// CircleTest2 인스턴스 생성
        CircleTest2 ob1 = new CircleTest2();
        
        // ob1.num = 10;
        //--==>> 컴파일 에러
        //-- num은 private 변수니까 다른 클래스에서 접근할 수 없음.
        //   ↓
        ob1.setNum(10);
        // CircleTest2의 setNum() 메소드에 접근해서 값을 넘겨준다.

// System.out.println("원의 반지름 : " + ob1.num); // --==>> 컴파일 에러 //-- private 변수에 접근 불가능 // ↓ System.out.println("원의 반지름 : " + ob1.getNum); // setNum() 메소드를 통해 값을 넘겨주고 // getNum() 메소드를 통해 값을 얻어온다.

//--==>> 원의 반지름 : 10 // ※ 현재로써는 유일하게 // CircleTest2의 num에 데이터를 전달할 수 있는 방법 //ob1.input(); //--==>> 반지름 입력 : 20 // → 『ob1.num = 20;』와 같은 의미 //double result = ob1.calArea(); // 원의 넓이 구하는 메소드 호출해서 double형 변수에 대입 //ob1.write(result); // 출력문 메소드 호출 } }

※ 정보 숨기기
『비공개』라는 액세스 제어 거버너의 선언
이는 액세스 및 참조가 클래스 내에서만 허용됨을 의미합니다.