본문 바로가기

2023.11.21-2024.05.31

231218 JAVA Access Modigiers(접근제어자)

 

 package com.sukgi.access;

 

  //접근제어자 Access Modigiers

  /*

  * 자바에서는 접근제어자를 통해 각 api의 접근 권한을 제한할 수 있습니다.

  * 어렵지 않습니다.

  *

  * 아래는 접근제어자의 범위를 크기 순서대로 나열해 둔 것입니다.

  *

  * public > protected > default(비어있는것) > private

  *

  * 이 중 public은 이미 보았습니다.(모두 접근 가능이라는 의미)

  *

  * public : 가장 넓은 범위로써 패키지 제한 없이 모두 접근 가능한 상태

  *

  * protected : 같은 패키지에서 접근 가능,

  * 다른 패키지에서는 상속받은 자식 클래스/ 인터페이스일 결우 가능

  *

  * default : 아무것도 안 붙은 형태

  * 아무런 접근 제한을 두지 않을 때

  * 같은 패키지 내에서 접근 가능

  * 다른 패키지에서 접근 불가

  *

  * private : 같은 패키지X, 다른 패키지X, 오직 내 클래스에서만 가능

  *

  * 접근제한자는 클래스명과 생성자, 메소드, 필드에 모두 사용 가능합니다.

  * 단, 클래스에서는 public과 default만 가능합니다.

  * 293P

  * ===============================================================================

  *             클래스 내부 | 동일 패키지 | 하위 클래스 | 그외

  * public            O                    O                   O            O

  * protected       O                    O                   O            X

  * default            O                    O                   X           X

  * private            O                    X                   X           X

  *

  * */

 

 

 

 class Apple{

  private String name; //이름 저장

  int age; // 나이 저장

 

  private Apple() {} // 생성장/오직 클래스 내부에서만 사용 가능

  static Apple getInstance() {

  return new Apple(); //정적 메서드/ Apple  클래스의 새로운 인스턴스를 반환

  }

 

  void print() {

  System.out.println("저는 "+ name + "입니다.");//name 쓸 수 있다.

  }

  void setName(String name) {//setter 저장하기-> 이름을 설정하는 고개된 메서드

  this.name = name;

  }

  String getName() {//getter 가져오기 // 이름을 반환하는 공개된 메서드

  return name;

  }

 

  void setAge(int age) { // 나이를 설정하는 고개된 메서드/ 음수인 경우 기본값 1로 설명

  if(0>age) {

  this.age=1;

  }else {

  this.age=age;

  }

  }

 

  int getAge() { // 나이를 반환하는 고개된 메서드

  return age;

  }

  }

 

  public class AccessModifiers {

  public static void main(String[] args) {

 

  Apple a = Apple.getInstance(); // 정적 메서드 getInstance 를 사용하여 Apple 클래스의 인스턴스를 생성

  //a.name="3PO";//name 쓰지 못한다.

  a.setName("3PO"); //'name'을 설정하는 공개된 메서드를 사용

  String name = a.getName(); //'name'을 가져오는 공개된 메서드를 사용

  System.out.println(name);

  }

 }

 

 

 3PO

 

 

이 코드는 캡슐화를 통해 private 필드를 안전하게 유지하고, 공개된 메서드를 통해 필드에 접근하고 수정하는 방법을 보여줍니다

 

캡슐화(Encapsulation)는 객체 지향 프로그래밍(OOP)의 한 원칙으로, 관련된 데이터와 메서드를 하나의 단위로 묶고, 그 내부의 세부 구현을 외부로부터 감추는 것을 의미합니다. 이는 정보 은닉(Information Hiding)이라고도 불립니다. 캡슐화는 프로그램의 모듈성을 높이고 코드의 재사용성을 증가시키며, 코드의 유지보수성을 향상시키는 데 기여합니다.

'2023.11.21-2024.05.31' 카테고리의 다른 글

231218 JAVA static01(인스턴스 멤버, 정적 멤버)  (0) 2023.12.19
231218 JAVA Human AM02(접근제어자 연습)  (0) 2023.12.19
231218 JAVA jinMaker  (0) 2023.12.19
231215 JAVA Test01  (1) 2023.12.15
231215 JAVA Human  (0) 2023.12.15