정보은닉
객체 외부에 인터페이스만 드러내고 객체의 내부 구현은 숨김
•
멤버 변수 선언시 private 접근제어 지정자 이용
•
메서드를 통한 안전한 접근만 허용
정보은닉을 위한 private 선언 예제
class Circle {
private double rad = 0;
final double PI = 3.14;
public Circle(double r) {
setRad(r);
}
public void setRad(double r) { // Setter
if(r < 0) {
rad = 0;
return;
}
rad = r;
}
public double getRad() { // Getter
return rad;
}
public double getArea() {...}
}
JavaScript
복사
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());
}
JavaScript
복사
생성자
•
객체가 생성될 때 단 한번 자동으로 호출되는 일종의 메서드
-객체의 멤버 변수를 ‘초기화’
-명시적으로 따로 호출하지는 않음
•
생성자 구현 조건
-생성자 이름은 클래스 이름과 같아야 함
-반드시 반환 자료형을 지정되지 않아야 함
default 생성자
•
컴파일러에 의해 자동으로 제공
프로그래머가 단 하나도 명시적으로 생성자를 정의하지 않은 경우에만 제공됨
프로그래머가 생성자를 하나라도 정의하면 제공되지 않음
•
인자가 없는 생성자
실제로 초기화를 위해 아무 일도 하지 않음
•
사용 예
Circle c = new Circle();
JavaScript
복사
패키지
•
비슷한 성격의 자바 클래스들을 모아 놓은 자바의 디렉토리
•
비슷한 성격의 클래스들끼리 묶을 수 있어 클래스의 분류가 용이
this 참조변수
•
메서드 호출시, 메서드 자신을 호출한 객체에 대한 참족값을 받는 변수
메서드 안에서 자동 정의되는 지역변수
•
메서드 안에서 그 자신의 다른 멤버들을 조작하고자 할 때 사용
내부적으로 전달되는 참조값
-멤버 접근시 컴파일러에 의해 기입됨(묵시적 사용)
명시적으로 사용해도 무방
-보통, 데이터 멤버와 매개 변수 구분 위해 사용