본문 바로가기

언어 기초/JAVA

접근제어자, 캡슐화 [JAVA | 학습을 위한 자료 | 김영한 자바 기본]

접근 제어자의 종류

  • private: 모든 외부 호출을 막는다.
  • default: 같은 패키지안에서 호출은 허용한다.
  • protected : 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다.
  • public : 모든 외부 호출을 허용한다.

순서대로 private이 가장 많이 차단하고, public이 가장 많이 허용한다. private -> default -> protected -> public

  • private 은 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.
  • default 는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지에서 해당 기능을 호출할 수 없다.
  • protected 는 상속 관계로 속성과 기능을 숨길 때 사용, 상속 관계가 아닌 곳에서 해당 기능을 호출할 수 없다.
  • public 은 기능을 숨기지 않고 어디서든 호출할 수 있게 공개한다.

접근 제어자 사용 위치 접근 제어자는 필드와 메서드, 생성자에 사용된다. 추가로 클래스 레벨에도 일부 접근 제어자를 사용할 수 있다.

 

캡슐화

캡슐화는 데이터와 해당 데이터를 처리하 는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것을 말한다. 캡슐화를 통해 데이터의 직접적인 변경을 방지하 거나 제한할 수 있다.
캡슐화는 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것이다.

 

문제와 풀이

쇼핑카트`

ShoppingCartMain 코드가 작동하도록 Item , ShoppingCart클래스를 완성해라.

요구사항

  • 접근 제어자를 사용해서 데이터를 캡슐화 하세요.
  • 해당 클래스는 다른 패키지에서도 사용할 수 있어야 합니다.

package access.ex;
 public class ShoppingCartMain {
     public static void main(String[] args) {
		ShoppingCart cart = new ShoppingCart();
		Item item1 = new Item("마늘", 2000, 2); 
        Item item2 = new Item("상추", 3000, 4);
         
        cart.addItem(item1);
        cart.addItem(item2);
        
        cart.displayItems();
     }
}

 

public class Item {
     private String name;
     private int price;
     private int quantity;
     
	//TODO 나머지 코드를 완성해라. 
}
public class ShoppingCart {
     private Item[] items = new Item[10];
     private int itemCount;
	//TODO 나머지 코드를 완성해라.
}