● 접근 제어자(access modifier)
![](https://blog.kakaocdn.net/dn/8J2GM/btrq6PyzFfy/e1KV58k1tBI22S7ftKodm1/img.png)
● private 사용 이유
- private을 통해 데이터에 직접 접근하는 것을 방지함으로써 유효한 값만 다룰 수 있고,
어떻게 동작하는지를 외부로부터 감출 수 있다.(데이터 은닉)
● 객체 지향 언어
- 코드가 독립적으로 존재할 수 있도록 지향하는 언어
- 객체라는 개념을 기반으로 한 프로그래밍 패러다임
● 객체 지향 언어의 특징
- 다형성 : 어떤 한 요소에 여러 개념을 넣어 놓는 것(오버로딩, ...)
- 캡슐화 : 데이터와 코드의 형태를 외부로부터 알 수 없게 감추는 방법(데이터 은닉)
- 추상화 : 객체의 공통적인 특성을 파악해서 필요 없는 특성을 제거하는 과정
- 상속 : 새로운 클래스가 기존 클래스의 코드를 사용할 수 있게 하는 기능
실습(접근 제어자(1))
- Test.java에 접근 제어자를 이용하여 변수 및 메소드 생성
public class Test {
private int pri;
protected int prot;
int defa; // 생략하면 default
public int pub;
public void test() {
System.out.println("같은클래스에서 사용 가능한지 확인용 메소드");
// private, protected, default, public 모두 같은 클래스에서는 사용 가능하다.
System.out.println(pri);
System.out.println(prot);
System.out.println(defa);
System.out.println(pub);
priF();
proF();
defaF();
pubF();
}
private void priF() {
System.out.println("private 메소드 실행됨");
}
protected void proF() {
System.out.println("protected 메소드 실행됨");
}
void defaF() {
System.out.println("default 메소드 실행됨");
}
public void pubF() {
System.out.println("public 메소드 실행됨");
}
}
1. 같은 패키지의 Main.java에서 실행
public class Main {
public static void main(String[] args) {
Test t = new Test();
// System.out.println(t.pri); // private은 같은 클래스에서만 사용 가능(직접적으로 값을 줄 수 없다.)
// t.priF();
System.out.println(t.prot);
t.proF();
System.out.println(t.defa);
t.defaF();
System.out.println(t.pub);
t.pubF();
}
}
![](https://blog.kakaocdn.net/dn/8ybJ2/btrq7baiYHY/qPfsm2L1LOAGd92VYYlfFK/img.png)
2. 다른 패키지의 Main.java에서 실행
- public만 다른 패키지, 다른 클래스에서 사용 가능하다.
import accessTest.Test;
public class Main {
public static void main(String[] args) {
Test t = new Test();
// System.out.println(t.pri); // private은 같은 클래스에서만 사용 가능
// t.priF();
// System.out.println(t.prot);
// t.proF();
System.out.println(t.pub);
t.pubF();
}
}
![](https://blog.kakaocdn.net/dn/vCJvW/btrq4xZIKaQ/wIFpNQsEoTdTkRFguL0CXk/img.png)
실습(Getter와 Setter)
1. 유저 정보 대입하기
(1) User.java에 getter와 setter 생성
public class User {
private String name;
private String id;
private String pw;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
(2) Main.java에서 실행
public class Main {
public static void main(String[] args) {
User kim = new User();
kim.setName("김철수");
System.out.println(kim.getName());
kim.setAge(-500);
}
}
![](https://blog.kakaocdn.net/dn/RiVMy/btrq4wT36gG/O1FbMcaP9KcuOHxQ80wbYk/img.png)