접근제한자
- 클래스, 메서드, 멤버변수 등의 접근 제한 용도로 사용하는 키워드
- (넓은) public > protected > default > private (좁음) => 단, default 접근제한자는 별도의 키워드 없이 생략하면 적용
- private 접근제한자
- 외부 클래스에서 접근하지 못하며, 자신의 클래스 내에서만 접근 가능
- 주로 외부에서 접근하지 못하도록 멤버변수에 적용
- 자신의 클래스 내에서 private 멤버변수 값에 접근하여 멤버변수의 값을 변경하거나 리턴하는 역할의 메서드를 정의하여 제공
- public 접근제한자
- 누구나 접근 가능
- 주로 외부에서 접근하는 메서드에 적용
Getter / Setter 메서드
- 클래스 내에서 private 접근제한자로 선언된 멤버변수 등에 접근을 위해 클래스 내에서 제공하는 중개 역할의 메서드
- public 접근제한자를 사용하여 정의(누구나 접근 가능)
- Getter : 내부 멤버변수의 값을 외부로 리턴하는 메서드 => getXXX() 형식의 메서드 이름을 사용하여 정의 이 때, XXX는 접근할 멤버변수의 이름을 사용 ex) 멤버변수 num에 접근하는 Getter 메서드 이름 : getNum() => 파라미터는 없고, 리턴값만 있는 메서드 ex) public int getNum() {}
- Setter : 외부로부터 값을 전달받아 내부 멤버변수에 저장하는 메서드 => setXXX() 형식의 메서드 이름을 사용하여 정의 이 때, XXX는 접근할 멤버변수의 이름을 사용 ex) 멤버변수 num에 접근하는 Setter 메서드 이름 : setNum() => 파라미터는 있고, 리턴값은 없는 메서드 ex) public void setNum(int num) {}
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) {
// 외부로부터 전달받은 neme 값(newName)을 멤버변수 name에 저장
name = newName;
}
int 타입 멤버변수 age에 대한 Setter 메서드 정의
public void setAge(int newAge) {
// 외부로부터 전달받은 age값(로컬변수 newAge)을 멤버변수 age에 저장
age = newAge;
}
// Person 클래스의 인스턴스(p) 생성
Person p = new Person();
// 멤버변수 값을 변경하기 위해 참조변수를 통해 멤버변수에 접근
// => 멤버변수 접근제한자가 private이므로 외부클래스에서 접근 불가!
// => 멤버변수에 저장할 값을 대신 전달받을 Setter 메서드 호출
p.setName("땅콩이"); // 이름을 전달받아 초기화하는 setName() 메서드 호출"
p.setAge(20); // 나이를 전달받아 초기화하는 setAge() 메서드 호출
// 멤버변수 값을 출력하기 위해 참조변수를 통해 멤버변수에 접근
// => 멤버변수 접근제한자가 private이므로 외부클래스에서 접근 불가!
// => 멤버변수 값을 대신 리턴해주는 Getter 메서드 호출
System.out.println("이름 : " + p.getName());
System.out.println("나이 : " + p.getAge());
은행계좌(Account) 클래스의 인스턴스(acc) 생성
package access_modifier;
public class Test {
public static void main(String[] args) {
// 은행계좌(Account) 클래스의 인스턴스(acc) 생성
// Setter() 메서드로 111-1111-111, 땅콩이, 10000 입력
// Getter() 메서드를 활용하여 계좌번호, 예금주명, 현재잔고 출력
/*
* Account 클래스 정의
* - 멤버변수(private 접근제한자로 선언)
* accountNo(문자열), ownerName(문자열), balance(정수)
* - Getter / Setter 메서드 정의(단축키 사용 가능!)
*/
class Account{
private String accountNo;
private String ownerName;
private int balance;
public String getAccountNo() {
return accountNo;
}
public void setAccountNo(String accountNo) {
this.accountNo = accountNo;
}
public String getOwnerName() {
return ownerName;
}
public void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
public int getBalance() {
return balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
}
Account a = new Account();
a.setAccountNo("111-1111-111");
a.setOwnerName("땅콩이");
a.setBalance(10000);
System.out.println("계좌번호 : " + a.getAccountNo());
System.out.println("예금주명 : " + a.getOwnerName());
System.out.println("현재잔고 : " + a.getBalance() + "원");
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 생성자(constructor) (0) | 2023.09.11 |
---|---|
[JAVA] 메서드 오버로딩을 사용하여 계산기 클래스 만들기 (0) | 2023.09.11 |
[JAVA] 객체지향 프로그래밍 이해하고 입출금기능 있는 은행잔고 클래스 만들기 (0) | 2023.09.11 |
[JAVA] break문과 continue문 (1) | 2023.09.11 |
[JAVA] 중첩 while문 (0) | 2023.09.11 |