-
[Java_Basic]정보 은닉 그리고 캡슐화(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 02:48
정보 은닉
클래스 외부에서 데이터에 직접 접근하는 것을 막겠다
논리적 오류의 경우 컴파일 오류가 발생 하지 않는다.
직접 접근을 허용하지 않고 논리적 오류를 물리적 오류로 이어지도록 강제한다.
class Circle{ double rad = 0; final double PI = 3.14; public Circle(double r){ setRad(r); //아래에 정의된 setRad 메소드 호출을 통한 초기화 } public void setRad(double r){ if(r<0){ rad = 0; return; } rad = r; } public double getArea(){ return (rad * rad)*PI; } } class UnsafeCircle{ public static void main(String args[]){ Circle c = new Circle(1.5); System.out.println(c.getArea()); c.setRad(2.5); System.out.println(c.getArea()); c.setRad(-3.3); System.out.println(c.getArea()); c.rad= -4.5; //옳지 않은 접근 방법. 문제가 되는 부부 System.out.println(c.getArea()); } }
private 선언
해당 클라스에 private 한 멤버가 되는 것
private 선언이 되면 클래스 내부에서만 접근을 허용하겠다는 의미
직접 접근이 불가하게 된다. 접근 수준 지시자/
Setter
인스턴스 변수의 값을 설정하는 용도로 정의된 메소드
변수의 이름이 name일 때. 메소드의 이름은 setName 으로 짓는 것이 관례
Getter
인스턴스 변수의 값을 참조하는 용도로 정의된 메소드
변수의 이름이 name일 때, 메소드의 이름은 getName으로 짓는 것이 관례
'Java > Basic' 카테고리의 다른 글
[Java_Basic]메소드의 오버로딩과 String 클래스(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]클래스 변수와 클래스 메소드(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]패키지와 클래스 패스(윤성우의 열혈 Java 프로그래밍) (0) 2020.12.30 [Java_Basic]클래스와 인스턴스(윤성우의 열혈 Java 프로그래밍) (0) 2020.12.26 [Java_Basic]메소드와 변수의 스코프(윤성우의 열혈 Java 프로그래밍) (0) 2020.12.26