일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- swagger
- 상속
- 개발이 취미인 사람
- java
- kafka
- restful api
- vue
- SWIFT
- 개발자
- state
- back-end
- react
- front-end
- javascript
- Kotlin
- AWS
- file upload
- Sequelize
- 조건문
- It
- node.js
- 코틀린
- component
- 반복문
- class
- Nest.js
- props
- Producer
- spring boot
- Today
- Total
개발이 취미인 사람
[Java] 접근 제어자 (Access Modifier) 본문
- 개요
안녕하세요. 이번 시간에는 자바에 접근 제어자(Access Modifier)에 대해 알아보겠습니다.
접근 제어자는 말 그대로 "변수와 메서드에 접근을 어디까지 허용하게 할 것인지 권한을 설정" 할 때 사용됩니다.
- 종류
- private
- default
- protected
- public
private
접근 제어자가 private으로 설정되었다면, "해당 변수와 메서드는 해당 클래스에서만 접근"이 가능합니다.
package com.company.person;
public class Person {
private String name; // 이름
private int age; // 나이
}
해당 변수를 호출하려고 했지만... 역시 호출할 수가 없습니다.
default
접근 제어자를 별도로 설정하지 않으면 "기본 변수, 메서드가 되며 해당 패키지 내에서만 접근"이 가능합니다.
package com.company.person;
public class Person {
String name; // 이름
int age; // 나이
}
동일하지 않은 패키지에서 person의 name을 호출하게 되면 변수를 호출 할수 없습니다.
하지만 동일한 패키지에서는 가능하죠 :)
여기서 패키지는 폴더를 뜻합니다. 같은 폴터 안에 포함 됐다면 접근이 가능합니다.
protected
접근 제어자가 protected로 설정 되었다면 "동일한 패키지내의 클래스" 또는 "해당 클래스를 상속 받은 외부 패키지의 클래스"까지 접근이 가능합니다.
당연히 동일한 패키지에는 변수를 참조할 수 있겠죠? 그럼 외부 패키지 클래스 예시를 진행하겠습니다.
package Access;
import Access.person.Person;
public class Adult extends Person {
public void setName(){
name = "다른 패키지 : 개발이 취미인 남자";
System.out.println(name);
}
}
외부 패키지 클래스에서 Person 클래스를 상속 받았습니다.
외부 패키지 클래스에서 다음과 같은 setName 메서드 안에 name 값을 참조하고 있다. 해당 name 은 Person(부모 클래스) 변수이다.
package Access;
public class Main {
public static void main(String[] args) {
Adult adult = new Adult();
adult.setName();
}
}
//실행 결과 콘솔화면
다른 패키지 : 개발이 취미인 남자
public
접근 제어자가 public으로 설정되었다면, 변수와 메서드는 패키지에 상관 없이 모든 클래스에서 접근이 가능합니다.
이번 시간에는 자바 접근 제어자(Access Modifier)에 대해 알아봤습니다.
모든 실습을 해보시는 걸 추천드리겠습니다. :) 프로그래밍은 실전이니깐요~~ ㅎ
'언어(Programming Language) > Java' 카테고리의 다른 글
[Java] Thread 클래스와 Runnable 인터페이스 개념 및 사용법 (0) | 2021.01.28 |
---|---|
[Java] Static 개념 및 사용법 (정적 데이터 선언 및 데이터 공유) (0) | 2021.01.28 |
[Java] 추상(abstraction) 클래스와 인터페이스(Interface) (0) | 2021.01.28 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) 개념 및 사용법 (1) | 2021.01.26 |
[Java] 클래스 상속 개념 및 사용법 (0) | 2021.01.25 |