자바의 접근 제한자 (클래스, 생성자, 멤버 변수, 메소드에 모두 적용됨)
public | private |
외부에서 접근 가능 //외부 패키지, 클래스에서 모두 접근가능 |
외부에서 접근 불가능 //같은 클래스 내에서만 접근 가능 //정보 은닉이 목적 |
최상위 클래스에서 사용 가능 //상속 가능 |
최상위 클래스에서 사용 불가능 //상속 불가능 |
상위 클래스가 public인데!! 멤버변수들이 private이면 ~~~~~~~~ 사용하는것이 Getter, Setter
private -> 외부에서 접근 불가능
따라서 Getter, Setter을 통하여 해당 값에 접근.
둘은 항상 같이 다님.
Getter 메소드로 정보에 접근하고 (return함수가 이때 쓰임. 알아낸 정보를 메인클래스로 보내야하니까!!)
Setter 메소드로 정보 전달을 한다.
package kr.tpc;
public class MemberVO {
private String name;
private int age;
private String tel;
private String addr;
public MemberVO() { }
public MemberVO(String name, int age, String tel, String addr) {
this.name = name;
this.age = age;
this.tel = tel;
this.addr = addr;
}
// setter, getter method
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 String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@Override
public String toString() {
return "MemberVO [name=" + name + ", age=" + age + ", tel=" + tel + ", addr=" + addr + "]";
}
}
이렇게 private인 멤버들 중 외부에서 값을 받아오는것을 허용하는 멤버만 골라서
Getter/Setter 메소드를 사용하면 된다.
이때 정보를 전달하는 메인 클래스는 아래와 같다.
import kr.tpc.MemberVO;
public class TPC14 {
public static void main(String[] args) {
MemberVO m=new MemberVO();
m.setName("홍길동"); //정보 전달시에 set이라는 키워드를 붙임
m.setAge(50);
m.setTel("010-1111-1111");
m.setAddr("서울");
System.out.print(m.getName()+"\t");
System.out.print(m.getAge()+"\t");
System.out.print(m.getTel()+"\t");
System.out.println(m.getAddr()+"\t");
}
}
** Setter 사용시 지양해야하는 부분 -> 무분별하게 사용 할 경우 데이터의 무결성을 해칠 수 있다.**
참고하면 좋은 블로그!!
https://thalals.tistory.com/279
**인프런 강의 'Java TPC(생각하고, 표현하고, 코딩하고 / 박매일 강사님)'를 듣고 작성 및 발췌 했습니다.
'Java' 카테고리의 다른 글
[JAVA/자바]super와 super()비교 -스크랩 (0) | 2022.12.14 |
---|---|
[JAVA/자바]초기화와 중복정의(Overloading) (0) | 2022.12.14 |
[JAVA/자바]private 생성자와 static, non-static (0) | 2022.12.11 |
[JAVA/자바]변수와 메서드 (0) | 2022.12.11 |
[JAVA/자바]Variable, DataType, Assign (0) | 2022.12.11 |