[접근지정자] : 변수, 메소드 앞에 붙음(생성자도 일종의 메소드)
-클래스의 멤버 각각에 외부에서 접근할 수 있는 범위를 지정하는 것
-public : 접근제한 없음
-protected : 동일 패키지와 상속 받은 클래스 내부, 다른 패키지 안에 있어도 상속받은 클래스면 사용가능
-default : 동일 패키지 내에서만 접근 가능, 보통 생략되어있음
-private : 동일 클래스 내에서만
주로 사용하는 것은 public과 private
-변수가 돈, 메소드가 은행원, 클래스가 은행일때
-변수를 꺼내려고 메소드에게 요청하면 메소드가 클래스에서 동작하여 변수에 있던 값을 가져다 줌
예시
[J11_Student]
public class J11_Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void printInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}
[J11_StudentMain]
// 다른 클래스가 public이어야 import가능
import j11_접근지정자.default1.J11_StudentDefault;
public class J11_StudentMain {
public static void main(String[] args) {
J11_Student s1 = new J11_Student();
// s1.name = "박은빈";
s1.printInfo();
// 해당 생성자도 public 이어야 생성가능
J11_StudentDefault s2 = new J11_StudentDefault();
// 변수, 메소드 등 모든 것을 public으로 바꾸어야 호출 가능
s2.printInfo();
// 외부에서 변수에 직접접근
// s2.name = "박은빈";
// 외부에서 변수에 직접접근, 멤버변수를 private으로 지정해두면 접근 불가
// System.out.println("이름 : " + s2.name);
// 메소드가 대신 접근, 메소드는 private로 설정하면 안됨
System.out.println("이름 : " + s2.getName());
}
}
다른패키지
[J11_StudentDefault]
public class J11_StudentDefault {
// 멤버변수는 무조건 private : 외부로부터 정보를 은닉
private String name;
private int age;
public J11_StudentDefault() {
}
public J11_StudentDefault(String name, int age) {
this.name = name;
this.age = age;
}
public void printInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
// Getter : 값을 들고오는 것
public String getName() {
// 같은 클래스 내부에서는 접근 가능
return name;
}
// Setter : 값을 대입하는 것
// 변수를 직접입력할 수 없기 때문에 메소드가 대신 입력해줌
public void setName(String name) {
this.name = name;
}
// 건들면 안되는 메소드 같은 것들도 모두 private 로 지정해둠 : 캡슐화
}
'백엔드개발자 준비하기' 카테고리의 다른 글
[백엔드개발자 준비하기] 배열 (0) | 2023.01.05 |
---|---|
[백엔드개발자 준비하기] 깃, 깃허브, 소스트리 활용하기 (0) | 2023.01.05 |
[백엔드개발자 준비하기] 생성자 (0) | 2023.01.05 |
[백엔드개발자 준비하기] 클래스와 객체 (0) | 2023.01.05 |
[백엔드개발자 준비하기] 메소드 (0) | 2023.01.05 |