본문 바로가기
Java

[JAVA/자바]Getter,Setter메소드 그리고 접근제어자 public, private

by hans-j 2022. 12. 14.

자바의 접근 제한자 (클래스, 생성자, 멤버 변수, 메소드에 모두 적용됨)

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

 

getter setter를 사용하는 이유

👏🏻 놉! 왠만하면 사용하지 않는게 좋습니다. 게터는 편의성을 위해 어쩔수 없이 사용하는 부분이 있지만 Setter는 되도록 지양해야한다. (2022.07 수정..ㅎ) 면접 스터디를 하면서 getter setter를 하

thalals.tistory.com


**인프런 강의 'Java TPC(생각하고, 표현하고, 코딩하고 / 박매일 강사님)'를 듣고 작성 및 발췌 했습니다.