[Java]/Program source (java)

098 - Java 클래스와 인스턴스 : 정보 은닉과 접근 제어 지시자

Jelly-fish 2023. 9. 7. 16:20
/*===============================================================================================
	■■■ 클래스와 인스턴스 ■■■	
	- 정보 은닉과 접근제어지시자(접근 지시자, 접근 제어자, 접근 지정자, 접근 제한자, ...)
================================================================================================*/

import java.util.Scanner;

// class 앞에 아무런 접근제어지시자 표현 x → default!!
// class 안에 있는 메소드를 public으로 표현한다 하더라도,
// class가 default 접근제어지시자이기 때문에
// 메소드를 public으로 접근지시자를 둔다 해도소용이 없다!!


// class 앞에 public이 붙는 클래스가 여러 개여서는 안 되는 이유는
// 접근 제어자와 상관 없이 파일 내부에서는 public 클래스 하나만 작성해야 되는 규칙 때문에 그렇다!


class CircleTest2
{
	// 멤버 변수, 인스턴스 변수(인스턴스 생성 되어야 사용...), 전역 변수
	//int num;

	// ↓

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

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

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

	public void input()
	{
		Scanner sc = new Scanner(System.in);

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

	}


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

	public void write(double area)
	{
		System.out.println(">> 반지름 : " + num);
		System.out.println(">> 넓이   : " + area);
	}






}

// CircleTest2, Test098 같은 패키지 안에 있음. → default 가능!

public class Test098
{
	public static void main(String[] args)
	{
		// CircleTest2 인스턴스 생성
		CircleTest2 ob1 = new CircleTest2();

		//ob1.num = 10;
		//   ↓
		//ob1.setNum(10);
		
		//System.out.println("원의 반지름 : " + ob1.num);
		//            ↓
		//System.out.println("원의 반지름 : " + ob1.getNum());


		


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


		double result = ob1.calArea();
		ob1.write(result);
		
	
	
	}
}

// 실행 결과

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