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』 이라는 접근제어지사자의 선언은
클래스 내부에서만 접근 및 참조가 가능하게 하겠다는 의미
'Java' 카테고리의 다른 글
[Java] json파일(JSONObject, JSONArray) 읽어와서 db에 저장하기 (2) | 2023.12.07 |
---|---|
[Java] Reflection (0) | 2023.12.06 |
[Java자바] 입력한 년/월/일의 요일 구하기. 배열 | 접근제어지시자 | 클래스 설계 (0) | 2023.02.25 |
[JAVA(자바)] 변수와 자료형(1) | println() 메소드로 출력하기 (0) | 2023.02.18 |
java.exe와 javac.exe의 차이? 역할? (2) | 2023.02.12 |