<Java> 6. 캡슐화와 정보은닉

정지민·2023년 10월 15일

Java

목록 보기
5/12

캡슐화

  • 데이터와 그와 관련된 연산들을 하나의 객체로 묶음

정보 은닉

  • 멤버 변수 선언시 private 접근제어 지정자 이용
  • 메서드를 통한 안전한 접근만 허용

각종 변수의 기본 유효 범위

  • 지역변수와 매개변수
    • 해당 메서드 안에서만 사용 가능
    • 메서드 시작시 할당
  • 멤버 변수
    • 해당 클래스 객체 전체에서 유효함
    • 객체 생성시 할당

public : 패키지 달라도 가능
protected: 같은 패키지에서만, 상속된 다른패키지는 가능
default : 같은 패키지에서만 (접근지정자 안써줌)
private : 나의 클래스 안에서만

Access 메서드

  • getter : 지정된 멤버 변수의 값을 반환
  • setter : 지정된 멤버 변수를 실인수의 값으로 설정
void setRadius(double radius){
	this.radius = radius;
}

default 클래스와 public 클래스

  • default 클래스 : 같은 패키지 내부에서만 객체 생성 가능
  • public 클래스 : 어디서나 클래스 객체 생성 허용
    • 하나의 소스파일에는 하나의 클래스만 public이 될 수 있음
    • 소스파일의 이름과 클래스 이름이 일치해아함

생성자

  • 객체가 생성될 때 단 한번 자동으로 호출되는 메서드
  • 객체의 멤버 변수를 '초기화'
  • 명시적으로 따로 호출하지 않음
  • 조건
    • 생성자 이름은 클래스 이름과 같아야함
    • 반환 자료형 없어야함

[접근제한] <생성자명> ([매개변수1],...,[매개변수n]){}

defalut 생성자

  • 프로그래머가 명시적으로 생성자 정의하지 않은 경우에 자동 제공
  • 생성자 하나라도 정의하면 제공되지 않음

매개변수를 가지는 생성자

  • 객체가 가질 인스턴스 멤버 변수의 초기값을 객체 생성시 전달 받음

생성자 오버로닝

  • 생성자의 다중정의

this([인수리스트]);

  • 오버로딩 되어있는 다른 생성자를 호출할 때 사용
  • 기존 생성자의 첫 행에 위치해야함
public Circle(double radius){ //public 아니면 다른 생성자에서 호출 x
	this.radius = radius;
}

public Circle(){
	this(1); //나의 또다른 생성자를 호출
}

가비지 컬렉션

  • java는 소멸자 없음
  • 대신 가비지 컬렉터가 필요 없는 객체를 찾아 자동으로 제거해줌

내부 클래스

  • 한 클래스 정의 안에 정의된 또다른 클래스
  • 내부 클래스의 메서드에서 외부 클래스의 멤버에 직접 접근 가능

0개의 댓글