📚 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
계속하려면 아무 키나 누르십시오 . . .
*/