Java

[Java자바] 정보 은닉 | 접근 제어 지시자 | 전역변수(멤버 변수, 인스턴스 변수) 초기화

dev_haha 2023. 2. 25. 15:23

2월 16일
Test098.java 

지시자 클래스 내부 동일 패키지 상속받은 클래스 이외의 영역
private O X X X
default O O X X
protected O O O X
public O O O O

public > protected > default > private

※ 접근 제어 지시자 == 접근 지시자 == 접근 제어자 == 접근 지정자 == 접근 제한자

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);
        // 출력문 메소드 호출
    }
}

※ 정보 은닉(Information Hidding)
『private』 이라는 접근제어지사자의 선언은 
클래스 내부에서만 접근 및 참조가 가능하게 하겠다는 의미