📚 Study/Java

JAVA :: Test098_클래스와 인스턴스(정보 은닉과 접근제어지시자)

bono-hye 2023. 9. 12. 00:03

정보 은닉 (Information Hiding)

 :  private 이라는 접근제어지시자의 선언은 클래스 내부에서만 접근 및 참조가 가능하게 하겠다는 의미

    int 형의 전역 변수 → 자동 0으로 초기화 지원

import java.util.Scanner;
class CircleTest2		// 얘부터가 default라 아래 메소드에 암만 public 걸어도 소용 ㄴㄴ
{
	// 멤버 변수, 인스턴스 변수, 전역변수
	// int num;

	// ↓

	// 정보 은닉(Information Hiding)
	// private 이라는 접근제어지시자의 선언은
	// 클래스 내부에서만 접근 및 참조가 가능하게 하겠다는 의미
	// int 형의 전역 변수 → 자동 0으로 초기화 지원

	private int num;

	// getter / setter 구성
	/*
	public int getNum()
	{
		return num;
	}

	public setNum(int num)
	{
		this.num = num;
	}
	*/

	void input()		// public도 가능 지금은 default
	{
		Scanner sc = new Scanner(System.in);

		System.out.print("반지름 입력 : ");
		num = sc.nextInt();
	}

	double calArea()
	{
		return num * num * 3.141592;
	}

	void write(double area)
	{
		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;
		//    ↓
		//ob1.setNum(10);  얘는 우리가 setNum 메소드를 안 만들었으니까 못 함 근데 일반적으로는 이렇게 진행

		//System.out.println("원의 반지름 : " + ob1.num); private 하면 프린트도 직접 못 함
		//			↓
		//System.out.println("원의 반지름 : " + ob1.getNum());


		// ※ 현재로써는 유일하게
		//    CircleTest2의 num에 데이터를 전달할 수 있는 방법
		ob1.input();
		//--==>> 반지름 입력 : 500
		//	ob1.num = 500; (내부적으로는 이게 진행됨)

		double result = ob1.calArea();

		ob1.write(result);	
	}
}

[Test098 실행 결과]

/*
반지름 입력 : 500
>> 반지름 : 500
>> 넓이 : 785398.0
계속하려면 아무 키나 누르십시오 . . .
*/