티스토리 뷰

 

 

 

 

 

 

 

 

 

 

📍   접근 제한자

–   클래스, 메서드, 멤버변수 등의 접근 제한 용도로 사용하는 키워드.
–   (넓은) public   >   protected   >   default   >   private (좁음)
     →   단,  default 접근제한자는 별도의 키워드 없이 생략하면 적용됨.

 

 

 

1.   private 접근제한자

–   외부 클래스에서 접근하지 못하며, 자신의 클래스 내에서만 접근 가능.
–   주로 외부에서 접근하지 못하도록 멤버변수에 적용함.
–   자신의 클래스 내에서 private 멤버변수 값에 접근하여 값을 변경하거나,  리턴하는 역할의 메서드를 정의하여 제공.

 

 

2.   public 접근제한자

–   누구나 접근 가능.
–   주로 외부에서 접근하는 메서드에 적용.

–   public이 붙을 수 있는건 해당 java파일과 이름이 같은 클래스뿐.
     내부 클래스를 만든다면 public 사용 불가,  외부 클래스를 만든다면 사용 가능.

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

📍   Getter / Setter 메서드

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

–   Generate Getters and Setters 자동 생성 단축키   :  alt + shift + s → r 

 

 

 

1.   Getter

–   내부 멤버변수의 값 외부로 리턴하는 메서드.
–   getxxx() 형식의 메서드 이름을 사용하여 정의하고,  이 때 xxx는 접근할 멤버변수의 이름을 사용함.
     ex ) 멤버변수 num에 접근하는 Getter 메서드 이름 : getNum();

–   외부에서 private 접근제한자로 정의된 멤버변수(+데이터)를 사용하려면 get메서드를 호출하여 사용할 수 있음.
–   파라미터는 없고 리턴값 음.


public int getNum() {
            return num;
}

 

 

 

2.   Setter

–   외부로부터 값을 전달받아 내부 멤버변수에 저장하는 메서드.
–   setxxx() 형식의 메서드 이름을 사용하여 정의하고, 이 때 xxx는 접근할 멤버변수의 이름을 사용함.
     ex )  멤버변수 num에 접근하는 Setter 메서드 이름 : setNum();

–   외부에서 private 접근제한자로 정의된 멤버변수(+데이터)를 초기화하여 사용하려면 set메서드를 호출하여 사용함.
–   파라미터만있고 리턴값은 없음. 


public void setNum(int newNum) {
                  num = newnum;
}
     

EX1   )

•   외부클래스 Person 생성 & 멤버변수에 private 적용

public class Person {
	
    	// 멤버변수
	private String name;
	private int age;
	private String jumin; 


	// get 메서드 정의
	// 1. String name
	public String getName() {
		return name;
	}
	// 2. int age
	public int getAge() {
		return age;
	}
	
	
	// Set 메서드 정의
	// 1. String name
	public void setName(String newName) {
		name = newName;
	}
	// 2. int age
	public void setAge(int newAge) {
		age = newAge;
	}
}

–   외부에서 클래스를 생성했으므로 public 사용 가능.

 

return name; 

–   멤버변수 name의 값을 외부로 리턴.

–   클래스의 멤버변수 메서드에서 선언없이 그냥 쓸 수 있음.

public void setName(String newName) {
              name = newName;
 }

–   외부로부터 전달받은 name값(로컬변수 newName)을 멤버변수 name에 저장함.

 

 


 

 

•   main 메서드에서 private 멤버변수 사용하기

Person p = new Person();

–   외부클래스의 멤버변수사용하려면 인스턴스를 만들어서 사용해야 함.

 

p.name = "박보검";

–   The field Person.name is not visible.

–   private 접근제한자로 정의했으므로 main 메서드에서 해당 멤버변수에 접근하려니 자동완성에도 안뜨고 에러 발생함.
–   원래라면 멤버변수 값을 변경하기 위해 참조변수를 통해 멤버변수에 접근이 가능하지만,

     멤버변수 접근제한자가 private이므로 외부클래스에서 접근 불가!

 

// set 메서드 사용
p.setName("박보검");
p.setAge(20);

–   외부클래스에서 private 멤버변수에 접근하기 위해 set 메서드를 사용함.

     →   Person클래스에서 getter & setter로 외부클래스에서도 사용할 수 있게끔 메서드를 정의해놓음.

–   해당 멤버변수를 '초기화'하여 사용하기 위해 set메서드를 호출하여 데이터를 '홍길동'으로 초기화 함.

     →   set 메서드를 사용하여 새로운 데이터 저장.

 

// System.out.println("이름 : " + p.name); 	// not visible
// System.out.println("이름 : " + p.age);	// not visible

// get 메서드 사용
System.out.println("이름 : " + p.getName());
System.out.println("나이 : " + p.getAge());

–   set 메서드를 사용하여 멤버변수에 저장한 데이터를 출력하기 위해 get 메서드를 사용함.

     →   데이터를 저장(set)했으니,  가져와서(get) 출력하기.

   실행 결과

더보기

이름 : 박보검
나이 : 20

 

 

 

EX2   ) 

•   Test 클래스 안에 Account 클래스 생성

} // Test 클래스 끝

class Account{

	// 멤버변수 생성
	private String accountNo;
	private String ownerName;
	private int balance;
	
	// Getter & Setter 메서드 정의
	// String accountNo 변수
	public String getAccountNo() {
		return accountNo;
	}
	
	public void setAccountNo(String newAccountNo) {
		accountNo = newAccountNo;
	}
	
	// String ownerName 변수
	public String getOwnerName() {
		return ownerName;
	}
	
	public void setOwnerName(String newOwnerName) {
		ownerName = newOwnerName;
	}
	
	// int balance 변수
	public int getBalance() {
		return balance;
	}
	
	public void setBalance(int newBalance) {
		balance = newBalance;
	}
}

–   Test 클래스 밑에 Account 클래스 생성함.

     →   public 접근제한자를 사용할 수 있는건 해당 java파일의 이름인 Test 클래스만 사용가능함.

–   멤버변수를 생성하고 private 접근 제한자를 사용함.

–   private 접근제한자가 걸려 있는 멤버변수들을 각각 getter와 setter 메서드로 정의해줌.

     →   외부 클래스에서 멤버변수에 간접적으로 접근하여 사용하기 위함.

 

public class Test {

	public static void main(String[] args) {
		// Account클래스 인스턴스 생성
		Account acc = new Account();	

		// set메서드 사용
		acc.setAccountNo("111-1111-111");
		acc.setOwnerName("홍길동");
		acc.setBalance(10000);

		// get메서드 사용
		System.out.println("계좌번호 : " + acc.getAccountNo());
		System.out.println("예금주 : " + acc.getOwnerName());
		System.out.println("잔고 : " + acc.getBalance());
		


	} // mian 메서드 끝

} // Test 클래스 끝

–   Account 클래스를 사용하기 위해 main메서드에서 인스턴스를 생성하여 해당 참조변수를 통해 멤버변수에 접근함.

–   새로운 데이터를 저장하여 출력하고 싶으므로 set메서드를 사용하여 데이터를 초기화 함.

–   저장한 데이터를 출력하기 위해 get메서드로 멤버변수에 접근하여 해당 데이터를 출력함.

 

 

 

 

 

 

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함