public
private
로 잠긴 멤버변수는 public
으로 명시된 메서드로 사용 가능함(getter, setter)private
protected
default
🖥️ 예시
class User{
public String name = "학생";
private int age = 20;
}
public class Main01 {
public static void main(String[] args) {
User user = new User();
// public 이므로 접근 가능
System.out.println( user.name );
//private 이므로 접근 불가능
// System.out.println(user.age);
}
}
결과값
학생
getter
setter
는 은닉된 멤버변수에 간접적으로 접근하기 위하여 정의된 메서드getter
setter
🖥️ 예시
class Student{
// 은닉된 멤버변수 → 현재 블록 안에서만 접근 가능함
private String name;
private int age;
// name getter
public String getName() {
return this.name;
}
// name setter (세팅이기 때문에 return 값이 없음)
// 세팅할 값을 파라미터로 받아옴
public void setName(String name) {
this.name = name;
}
// age getter
public int getAge() {
return this.age;
}
// age setter
public void setAge(int age) {
this.age = age;
}
}
public class Main02 {
public static void main(String[] args) {
// getter, setter 사용
Student student = new Student();
student.setAge(20);
student.setName("학생1");
String name = student.getName();
System.out.println("이름: " + name);
System.out.println("나이: "+student.getAge());
}
}
결과값
이름: 학생1
나이: 20
→ get
set
접두사 뒤에 변수이름을 첫 글자가 대문자인 형태로 명시
→ getter
는 연결된 멤버변수의 데이터 타입을 리턴형으로 명시
→ setter
는 연결된 멤버변수의 데이터 타입을 파라미터 형으로 명시
클래스의 접근 한정자도 알아보자
public
public
접근 한정자만 사용private
protected
default
하나의 소스코드에서 프로그램의 모든 기능을 구현하게 되면 유지보수에 비효율적
→ 기능단위로 소스코드를 분리해야 한다 !
소스코드가 분리된 클래스끼리는 public
이 명시 되어야만 서로 객체 생성이 가능
하나의 소스코드에는 하나의 public
클래스만 존재 가능