산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 접근 제어자 이해: 종류, 규칙, 실전 예제

Java 접근 제어자

이 튜토리얼에서는 Java 접근 제어자의 네 가지 종류와 명확한 예제를 통한 사용법을 다룹니다.

접근 제어자란 무엇인가?

Java에서 접근 제어자는 클래스, 인터페이스, 변수, 메서드, 생성자, 데이터 멤버의 가시성을 정의합니다. 예를 들어,

class Animal { public void method1() {...} private void method2() {...} }

위 예제에서 method1은 public으로 모든 클래스에서 접근 가능합니다. method2은 private으로 선언된 클래스 내부에서만 접근 가능합니다.

이 키워드들(public, private)이 Java의 핵심 가시성 제어자입니다.

참고: 게터 메서드 자체에는 접근 제어자를 선언할 수 없습니다.


접근 제어자의 종류

제어자를 살펴보기 전에 Java 패키지 개념을 이해하고 있어야 합니다.

Java는 네 가지 주요 가시성 제어자를 제공합니다:

제어자설명
Default (패키지-프라이빗)같은 패키지 내에서만 가시적
Private선언된 클래스 내부에서만 가시적
Protected같은 패키지 내 및 다른 패키지의 하위 클래스에서 가시적
Public모든 곳에서 가시적

Default 접근 제어자

제어자를 명시하지 않으면 Java는 default(패키지-프라이빗) 가시성을 적용합니다. 예를 들어:

package defaultPackage; class Logger { void message() { System.out.println("This is a message"); } }

Logger 클래스는 defaultPackage 내의 클래스에서만 접근 가능합니다. 다른 패키지에서 사용하면 컴파일 에러가 발생합니다.


Private 접근 제어자

멤버를 private로 선언하면 해당 클래스 내부에서만 접근 가능합니다:

class Data { private String name; } public class Main { public static void main(String[] args) { Data d = new Data(); d.name = "Programiz"; // ❌ 컴파일 에러 } }

에러가 발생하는 이유는 name이 Data 클래스에 private이기 때문입니다. 안전하게 노출하려면 접근자 메서드를 제공해야 합니다:

class Data { private String name; public String getName() { return this.name; } public void setName(String name) { this.name = name; } } public class Main { public static void main(String[] args) { Data d = new Data(); d.setName("Programiz"); System.out.println(d.getName()); } }

출력:

The name is Programiz

중첩 클래스는 private로 선언할 수 있지만, 최상위 클래스와 인터페이스는 불가능합니다.

참고: Java는 최상위 클래스나 인터페이스를 private로 허용하지 않습니다.


Protected 접근 제어자

protected로 표시된 멤버는 같은 패키지 내와 다른 패키지의 하위 클래스에서 접근 가능합니다. 예제:

class Animal { protected void display() { System.out.println("I am an animal"); } } class Dog extends Animal { public static void main(String[] args) { Dog dog = new Dog(); dog.display(); // ✅ 허용 } }

출력:

I am an animal

Protected 멤버는 최상위 클래스나 인터페이스에 선언할 수 없습니다.

참고: 최상위 클래스와 인터페이스는 protected가 될 수 없습니다.


Public 접근 제어자

public으로 선언된 멤버는 어디서든 접근 가능합니다:

// Animal.java public class Animal { public int legCount; public void display() { System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); } } // Main.java public class Main { public static void main(String[] args) { Animal animal = new Animal(); animal.legCount = 4; animal.display(); } }

출력:

I am an animal. I have 4 legs.

요약: Animal(public 클래스), legCount(public 필드), display()(public 메서드)는 모두 Main에서 접근 가능합니다.


한눈에 보는 접근 제어자 요약

Java 접근 제어자 이해: 종류, 규칙, 실전 예제

접근 제어자는 캡슐화의 기반이며, 개발자가 가시성을 제어하고 데이터 무결성을 보호할 수 있게 합니다. 캡슐화에 대한 자세한 내용은 Java 캡슐화를 참조하세요.

java

  1. C# 접근 한정자 완전 이해: public, private, protected, internal 등
  2. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  3. Java 주석: 종류, 사용법, 모범 사례
  4. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  5. Java String 마스터하기: 생성, 메서드, 모범 사례
  6. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  7. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  8. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  9. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  10. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보