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);
// 출력문 메소드 호출
}
}
※ 정보 숨기기
『비공개』라는 액세스 제어 거버너의 선언
이는 액세스 및 참조가 클래스 내에서만 허용됨을 의미합니다.