본문 바로가기

BackEnd/Java

0907 JAVA - 접근제한자, Getter / Setter

728x90
반응형

클래스, 메서드, 멤버변수 등의 접근 제한 용도로 사용하는 키워드


 - (넓) public > protected > default > private (좁)
  => 단, default 접근 제한자는 별도의 키워드 없이 생략하면 적용 
  

private 접근제한자 
 - 외부 클래스에서 접근하지 못하며, 자신의 클래스 내에서만 접근 가능

 

주로, 외부에서 접근하지 못하도록 멤버변수에 적용 

 - 자신의 클래스 내에서 private 멤버변수 값에 접근하여
   멤버변수의 값을 변경하거나 리턴하는 역할의 메서드를 정의하여 제공 

 

 

 

<Person.class> 

Person 에서 private 클래스를 만들어줌. 

package access_modifier;

public class Person {
private String name; 
private int age;

}

 

 

그러면, 다른 클래스 Ex.class 에서는 private 멤버변수 값에 접근할 수 없다!!     < -> 반대 public 메서드 

검색해도 나오지 않는 모습. 

 


 

Getter / Setter 메서드

   클래스 내에서 private 접근제한자로 선언된 멤버변수 등에 접근을 위해
   클래스 내에서 제공하는 중개 역할의 메서드 
  -public 접근제한자를 사용하여 정의 (누구나 접근 가능)
   

alt + shift + s    +   R 


Getter :

내부 멤버변수의 값을 외부로 리턴하는 메서드 
   => getXXX() 형식의 메서드 이름을 상요하여 정의 , 이 때, XXX는 접근할 멤버변수의 이름을 사용 
   ex) 멤버변수 num 에 접근하는 Getter 메서드 이름 : getNum()

=> 파라미터는 없고, 리턴값만 있는 메서드 
  ex) public int getNum() {} 

 


Setter :

외부로부터 값을 전달 받아 내부 멤버변수에 저장하는 메서드
  => setXXX() 형식의 메서드 이름을 사용하여 정의 , 이 때, XXX는 접근할 멤버변수의 이름을 사용
  ex) 멤버변수 num 에 접근하는 Setter 메서드 이름 : setNum()
  => 파라미터는 있고, 리턴값은 없는 메서드 
  ex) public void setNum() {} 

 

 

public class Person {
	//외부에서 멤버변수에 접근이 불가능하도록 private 접근제한자 적용 
	private String name = "홍길동"; 
	private int age;
	
	//멤버변수 대신 접근하도록 Getter / Setter 메서드 정의 (public 접근제한자 사용)
	// 1. Getter 메서드 정의 
	// => 파라미터는 없고, 리턴값만 있는 메서드 
	// String 타입 멤버변수 name 에 대한 Getter 메서드 
	
	public String getName() { 
		//멤버변수 name 의 값을 외부로 리턴 
		return name;  
	}
	
	//int 타입 멤버변수 age 에 대한 Getter 메서드 
	public int getAge() { 
		//멤버변수 age 값을 외부로 리턴 
		return age;
	}
	
	// 2. Setter 메서드 정의 
	//  => 파라미터만 있고, 리턴값은 없는 메서드 
	// String 타입 멤버변수 name 에 대한 Setter 메서드 정의 
	public void setName(String newName) {
		//외부로부터 전달받은 name 값 (로컬변수 newName(갈색))을 멤버변수 name 에 저장 
		name = newName;
	}
	
	//int 타입 멤버변수 age에 대한 Setter 메서드 정의
	public void setAge(int newAge) {
		//외부로부터 전달받은 age 값 (로컬변수 newAge)을 멤버변수 age에 저장 
	}
}

1. new 클래스 인스턴스 생성 

2. private함수 만들기

3. set 메서드 만들기

4. get 메서드 만들어서 출력하기 

	public static void main(String[] args) {
		// 은행계좌 (Account) 클래스의 인스턴스(acc) 생성

	Account acc = new Account();
	
	// Setter() 메서드로 111-1111-111, 홍길동, 10000원 입력 
	acc.setAccountNo("111-1111-111");
	acc.setOwnerName("홍길동");
	acc.setBalance(10000);
	
	// Getter() 메서드를 활용해서 계좌번호, 예금주명, 현재잔고 출력 
	
	System.out.println(acc.getAccountNo());
	System.out.println(acc.getBalance());
	System.out.println(acc.getOwnerName());
	}
}

// Account 클래스의 멤버변수를 private 접근제한자로 선언
	class Account {
		private String accountNo;
		public String getAccountNo() {
			return accountNo;
		}
		public void setAccountNo(String accountNo) {
			this.accountNo = accountNo;
		}
		
		private String ownerName;
		public String getOwnerName() {
			return ownerName;
		}
		public void setOwnerName(String ownerName) {
			this.ownerName = ownerName;
		}
		
		private int balance;
		public int getBalance() {
			return balance;
		}
		public void setBalance(int balance) {
			this.balance = balance;
		}
728x90
반응형

'BackEnd > Java' 카테고리의 다른 글

0919 JAVA - constructor_overloading 생성자 오버로딩  (0) 2022.09.19
0908 JAVA - Constructor  (1) 2022.09.10
0907 JAVA - class 정의  (0) 2022.09.07
0831 JAVA - 클래스 정의  (0) 2022.08.31
0831 JAVA - method 호출  (0) 2022.08.31