일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 스프링 부트
- 구글 리캡차
- tcp와 udp의 차이점
- Oracle
- position속성
- Create
- html
- Failed to read the 'responseText' property from 'XMLHttpRequest'
- 시맨틱 태그
- css position
- 기술면접
- 80 to 443
- 리캡차
- 바닐라js
- Rename to
- 기술 면접
- html요소
- 신입개발자
- 네트워크
- cs질문
- css
- 속성
- multiarray
- 스프링부트
- 자바의 장점
- 자바
- CSS display 속성
- Java
- 예외처리
- database
- Today
- Total
Building value
Java[접근제어자] 본문
자바에서 접근제어자는 클래스, 인터페이스, 메서드, 변수 등의 멤버들의 접근 범위를 지정하는 키워드입니다.
접근제어자를 사용하여 클래스 외부에서 멤버에 접근할 수 있는지 여부를 제한할 수 있습니다.
접근제어자에는 다음과 같은 종류가 있습니다.
1. public : 어떤 클래스에서도 접근 가능합니다.
// public 접근제어자를 사용한 클래스
public class PublicClass {
public void publicMethod() {
System.out.println("public method");
}
}
2. protected : 같은 패키지 내의 클래스와 상속받은 클래스에서만 접근 가능합니다.
// protected 접근제어자를 사용한 멤버 변수
class ProtectedClass {
protected String protectedVariable = "protected variable";
}
3. default(package-private) : 같은 패키지 내에서만 접근 가능합니다.
접근 제어자를 명시하지 않으면 기본적으로 default로 지정됩니다.
// default 접근제어자를 사용한 클래스
class DefaultClass {
void defaultMethod() {
System.out.println("default method");
}
}
4. private : 같은 클래스 내에서만 접근 가능합니다.
// private 접근제어자를 사용한 메소드
class PrivateClass {
private void privateMethod() {
System.out.println("private method");
}
public void callPrivateMethod() {
privateMethod();
}
}
위 코드에서 PublicClass는 어떤 클래스에서든 접근이 가능하고,
ProtectedClass는 같은 패키지 내의 클래스나 상속받은 클래스에서만 접근이 가능합니다.
DefaultClass는 같은 패키지 내에서만 접근이 가능하며,
PrivateClass의 privateMethod는 같은 클래스 내에서만 접근이 가능합니다.
따라서 callPrivateMethod 메소드를 호출하여 privateMethod를 실행하도록 허용됩니다.
아래는 접근 제어자를 활용한 예시 코드입니다.
public class Person {
private String name; // private 멤버 변수
protected int age; // protected 멤버 변수
public boolean gender; // public 멤버 변수
// public 메소드
public void setName(String name) {
this.name = name;
}
// private 메소드
private void setAge(int age) {
this.age = age;
}
// protected 메소드
protected void setGender(boolean gender) {
this.gender = gender;
}
// default 메소드
void displayInfo() {
System.out.println("이름: " + name);
System.out.println("나이: " + age);
System.out.println("성별: " + (gender ? "남자" : "여자"));
}
}
위 코드에서 name 멤버 변수는 private으로 선언되어 해당 클래스 내부에서만 접근 가능하며,
age 멤버 변수는 protected로 선언되어 같은 패키지 내의 클래스와 해당 클래스를
상속받은 클래스에서 접근 가능합니다.
gender 멤버 변수는 public으로 선언되어 모든 클래스에서 접근 가능합니다.
메소드도 마찬가지로 접근 제어자를 적용하여 접근을 제한할 수 있습니다.
'Java' 카테고리의 다른 글
Java[예외처리(throw와 throws)] (0) | 2023.03.24 |
---|---|
Java[예외처리(try-catch-finally)] (0) | 2023.03.24 |
Java[인터페이스(Interface)] (0) | 2023.03.23 |
Java[추상화(Abstraction)] (0) | 2023.03.23 |
Java[캡슐화(Encapsulation)] (0) | 2023.03.23 |