Java - 접근 제한자 [IT 국비지원/구디 아카데미/김지훈 강사님]

hooon__dii·2023년 8월 30일
0

Java

목록 보기
11/11
post-thumbnail

접근제한자(Access Modifier)

Java에서는 접근을 허용하거나 제한 할수 있다.
여기서 접근은 클래스 및 인터페이스와 각 멤버의 접근을 의미한다.

접근 제한자의 종류

  접근제한자  적용대상   접근허용   
public     class, field, constructor, method     ALL
protectedfield, constructor, methodextends
defaultclass, field, constructor, methodPackage
privatefield, constructor, methodClass

public : 모든 패키지에서 아무런 제한 없이 생성자를 호출할 수 있도록 한다.

protected : 같은 패키지에 속하는 클래스에서 생성자를 호출할 수 있도록 한다. 만약 다른 패키지에 속한 클래스가 해당 클래스의 자식 클래스라면 생성자를 호출할 수 있다.

default : 같은 패키지에서는 아무런 제한 없이 생성자를 호출할 수 있다.
(접근제한자를 명시해주지안으면 기본으로 dafault 접근제한을 가진다)

private : 패키지 상관없이 생성자를 호출하지 못하도록 제한합니다. 오로지 클래스 내부에서만 생성자를 호출할 수 있고 객체를 만들 수 있다.


Getter / Setter

객체지향 프로그래밍에서 객체데이터를 외부에서 읽고 변경시 객체의 무결성이 깨질 수 있기떄문에 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다.
데이터는 외부에서 접근하지 않도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터를 접근하게 하도록 한다.
** 메소드는 매개값을 검증해서 유효한 값만 데이터로 저장 할 수 있기 때문 **
ex)

public class Computer {
	
	private boolean power = false;	// 외부에서 조절 가능
	private int panSpeed;	// 외부에서 조절가능
	private int temp; 	// 외부에서 볼 수만 있게 제한
	
	
	public boolean isPower() {
		return power;
	}
	public void setPower(boolean power) {
		this.power = power;
	}
	public int getPanSpeed() {
		return panSpeed;
	}
	public void setPanSpeed(int panSpeed) {	// 팬 속도를 통해 온도 조절
		this.panSpeed = panSpeed;
		// 110 - 팬속도 = temp 라고 가정
		temp = 110-this.panSpeed;
	}
	public int getTemp() {
		return temp;
	}
	
}
public class Main {
	
	public static void main(String[] args) {
		
		Computer com = new Computer();
		
		// power 조절 및 보기
		com.setPower(true);
		System.out.println("power : "+com.isPower());
		
		// pan speed 조절 및 보기 
		com.setPanSpeed(80);
		System.out.println("pan speed : "+com.getPanSpeed());
		
		// 온도 보기 ( 조절 불가 )
		System.out.println("온도 : "+com.getTemp());
	}
}

이렇게 특정부분의 접근을 제한하는것을 캡슐화(Encapsulation)라고 한다.


캡슐화(Encapsulation)

서로 연관 있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로 부터 보호하는것을 말한다.

캡슐화를 하는 이유 ?

  • 데이터 보호 : 외부로 부터 클래스에 정의된 속성과 기능들을 보호
  • 데이터 은닉 : 내부의 동작을 감추고 외부에는 필요한 부분만 노출

즉, 각 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 하는 목적


캡슐화가 캡슐화인 이유를 알것같다
it국비지원 / 구디아카데미 / 김지훈강사님

0개의 댓글