반응형
/*
* Getter / Setter 메서드
* - 클래스 내에서 private 접근제한자로 선언된 멤버변수 등에 접근을 위해
* 클래스 내에서 제공하는 중개 역할의 메서드
* - public 접근제한자를 사용하여 정의(누구나 접근 가능)
* 1. Getter : 내부 멤버변수의 값을 외부로 리턴하는 메서드
* => getXXX() 형식의 메서드 이름을 사용하여 정의
* 이 때, XXX 은 접근할 멤버변수의 이름을 사용
* ex) 멤버변수 num 에 접근하는 Getter 메서드 이름 : getNum()
* => 파라미터는 없고, 리턴값만 있는 메서드
* ex) public int getNum() {}
* 2. Setter : 외부로부터 값을 전달받아 내부 멤버변수에 저장하는 메서드
* => setXXX() 형식의 메서드 이름을 사용하여 정의
* 이 때, XXX 은 접근할 멤버변수의 이름을 사용
* ex) 멤버변수 num 에 접근하는 Setter 메서드 이름 : setNum()
* => 파라미터만 있고, 리턴값은 없는 메서드
* ex) public void setNum(매개변수선언...) {}
* => Getter/Setter 메서드 자동 생성 단축키
* Alt + Shift + S -> R
*/
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 에 저장
age = newAge;
}
}
public class Ex {
public static void main(String[] args) {
// Person 클래스의 인스턴스 생성
Person p = new Person();
// 멤버변수 값을 변경하기 위해 참조변수를 통해 멤버변수에 접근
// => 멤버변수 접근제한자가 private 이므로 외부클래스에서 접근 불가
// p.name = "홍길동"; // not visible
// p.age = 20; // not visible
// => 멤버변수에 저장할 값을 대신 전달받을 Setter 메서드 호출
p.setName("홍길동"); // 이름을 전달받아 초기화하는 setName() 메서드 호출
p.setAge(20); // 나이를 전달받아 초기화하는 setAge() 메서드 호출
// 멤버변수 값을 출력하기 위해 참조변수를 통해 멤버변수에 접근
// => 멤버변수 접근제한자가 private 이므로 외부클래스에서 접근 불가
// System.out.println("이름 : " + p.name); // not visible
// System.out.println("나이 : " + p.age); // not visible
// => 멤버변수 값을 대신 리턴해주는 Getter 메서드 호출
System.out.println("이름 : " + p.getName());
System.out.println("나이 : " + p.getAge());
}
}
/*
이름 : 홍길동
나이 : 20
*/
public class Test {
public static void main(String[] args) {
// 은행계좌(Account) 클래스의 인스턴스(acc) 생성
Account acc = new Account();
// acc.accountNo = "111-1111-111";
// acc.ownerName = "홍길동";
// acc.balance = 10000;
// => Setter 메서드로 대체
acc.setAccountNo("111-1111-111");
acc.setOwnerName("홍길동");
acc.setBalance(10000);
// System.out.println("계좌번호 : " + acc.accountNo);
// System.out.println("예금주명 : " + acc.ownerName);
// System.out.println("현재잔고 : " + acc.balance + "원");
// => Getter 메서드로 대체
System.out.println("계좌번호 : " + acc.getAccountNo());
System.out.println("예금주명 : " + acc.getOwnerName());
System.out.println("현재잔고 : " + acc.getBalance() + "원");
}
}
class Account {
// Account 클래스의 멤버변수를 private 접근제한자로 선언
private String accountNo;
private String ownerName;
private int balance;
// Getter/Setter 메서드를 정의하여 멤버변수에 간접적으로 접근하도록 수행
// 1. String accountNo 변수에 대한 Getter/Setter
// public String getAccountNo() {
// return accountNo;
// }
//
// public void setAccountNo(String newAccountNo) {
// accountNo = newAccountNo;
// }
// 2. String ownerName 변수에 대한 Getter/Setter
// public String getOwnerName() {
// return ownerName;
// }
//
// public void setOwnerName(String newOwnerName) {
// ownerName = newOwnerName;
// }
// 3. int balance 변수에 대한 Getter/Setter
// public int getBalance() {
// return balance;
// }
//
// public void setBalance(int newBalance) {
// balance = newBalance;
// }
// ================================================
// 단축키를 사용하여 Getter/Setter 메서드 자동 정의
// - 클래스 내에서 멤버변수 선언 후 Alt + Shift + S -> R
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;
}
}
/*
계좌번호 : 111-1111-111
예금주명 : 홍길동
계좌잔고 : 1000원
*/
public class Test2 {
public static void main(String[] args) {
Account acc = new Account("1111-1111-1111", "홍길동", 10000);
acc.showAccountInfo();
}
}
class Account {
private String accountNo;
private String ownerName;
private int balance;
//생성자 초기화
public Account(String accountNo, String ownerName, int balance) {
this.accountNo = accountNo;
this.ownerName = ownerName;
this.balance= balance;
}
//인스턴스 변수 getter/setter
public String getAccountNo() {
return accountNo;
}
//this변수 사용해서 값저장
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;
}
//메소드 정의
public void showAccountInfo() {
System.out.println("계좌번호 : " + accountNo);
System.out.println("예금주면: " + ownerName);
System.out.println("현재잔고 : " +balance + "원");
}
}
/*
계좌번호 : 1111-1111-1111
예금주면: 홍길동
현재잔고 : 10000원
*/
반응형
'JAVA' 카테고리의 다른 글
[Java] 메서드 오버로딩(Method Overloading) (0) | 2021.10.28 |
---|---|
[Java] 생성자(Constructor) (0) | 2021.10.28 |
[Java] 접근제한자 (0) | 2021.10.28 |
[Java] Class 연습 (0) | 2021.10.28 |
[Java] Class (0) | 2021.10.28 |