반응형
public class Test {
public static void main(String[] args) {
// Person 클래스의 인스턴스(p) 생성
// 이름 : 홍길동, 나이 : 20, 배고픔 : false 값 저장
Person p = new Person();
// 외부의 다른 클래스에서 Person 클래스의 인스턴스에 접근하기 위해서는
// 참조변수 p를 통해 접근 필수!
p.name = "홍길동";
p.age = 20;
p.isHungry = false;
// System.out.println("이름 : " + p.name);
// System.out.println("나이 : " + p.age);
// System.out.println("배고픔 : " + p.isHungry);
// 참조변수 p를 통해 멤버변수는 물론 메서드까지 접근 가능
p.showPersonInfo();
p.talk();
p.eat("짬뽕");
}
} // Test 클래스 끝
/*
* Person 클래스 정의
* [ 멤버변수(인스턴스변수) 선언 ]
* - 이름(name, String)
* 나이(age, int)
* 배고픔(isHungry, boolean)
*
* [ 메서드 정의 ]
* - 이름, 나이, 배고픔을 출력하는 showPersonInfo() 메서드
* (매개변수 없음, 리턴값 없음)
*
* - 밥먹는 기능을 수행하는 eat() 메서드
* (매개변수 : 음식이름(foodName, 문자열), 리턴값 없음)
* => "XXX 먹기!" 출력
* => 멤버변수 isHungry 의 값을 false 로 변경
*
* - 말하는 기능을 수행하는 talk() 메서드
* (매개변수 없음, 리턴값 없음)
* => "말하기!" 출력
* => 멤버변수 isHungry 의 값을 true 로 변경
*/
class Person {
// 멤버변수(인스턴스변수) 선언
String name;
int age;
boolean isHungry; // true : 배고픔, false : 배고프지 않음
public void showPersonInfo() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
System.out.println("배고픔 : " + isHungry);
}
// 밥먹기 기능
public void eat(String foodName) {
System.out.println(foodName + " 먹기!");
// isHungry 변수의 값을 false 로 변경(배고프지 않음)
isHungry = false;
System.out.println("식사 후 배고픔 : " + isHungry);
}
// 말하기 기능
public void talk() {
System.out.println("말하기!");
// isHungry 변수의 값을 true 로 변경(배고픔)
isHungry = true;
System.out.println("말한 후 배고픔 : " + isHungry);
}
}
public class Test2 {
public static void main(String[] args) {
// 은행계좌(Account) 클래스의 인스턴스(acc) 생성
Account acc = new Account();
acc.accountNo = "111-1111-111";
acc.ownerName = "홍길동";
acc.balance = 10000;
acc.showAccountInfo();
System.out.println("----------");
acc.deposit(999999);
acc.deposit(500);
System.out.println("----------");
// 현재잔고보다 적거나 같은 금액을 출금하는 경우(출금 가능)
int money = acc.withdraw(50000);
System.out.println("출금된 금액 : " + money + "원");
// 현재잔고보다 많은 금액을 출금하는 경우(출금 불가)
money = acc.withdraw(50000000);
System.out.println("출금된 금액 : " + money + "원");
}
}
/*
* 은행계좌(Account) 클래스 정의
* [ 멤버변수 선언 ]
* - 계좌번호(accountNo, 문자열)
* - 예금주명(ownerName, 문자열)
* - 현재잔고(balance, 정수)
*
* [ 메서드 정의 ]
* - 계좌번호, 예금주명, 현재잔고를 출력하는 showAccountInfo() 메서드
* ex) 계좌번호 : 111-1111-111
* 예금주명 : 홍길동
* 현재잔고 : 10000원
*
* - 입금 기능을 수행하는 deposit() 메서드
* => 입금할 금액(amount, 정수)을 전달받아 현재잔고(balance)에 누적한 후
* 입금된 금액과 입금 후 현재잔고를 출력
* ex) "입금하신 금액 : XXXXX원"
* "입금 후 현재잔고 : XXXXX원"
* => 단, 리턴값은 없음
*
* - 출금 기능을 수행하는 withdraw() 메서드
* => 출금할 금액(amount, 정수)를 전달받아 현재잔고(balance)에서 차감한 후
* 출금될 금액과 출금 후 현재잔고를 출력
* ex) "출금할 금액 : XXXXX원"
* "출금 후 현재잔고 : XXXXX원"
* => 단, 출금 기능을 수행하기 전 현재잔고와 출금할 금액을 비교하여
* 현재잔고가 출금할 금액보다 적을 경우 출금을 수행하지 않고 다음과 같이 출력
* ex) "잔고가 부족하여 출금이 불가능합니다."
* "출금할 금액 : XXXXX원, 현재잔고 : XXXXX원"
* => 리턴값 있음(출금할 금액에 해당하는 금액 리턴)
*/
class Account {
String accountNo;
String ownerName;
int balance;
public void showAccountInfo() {
System.out.println("계좌번호 : " + accountNo);
System.out.println("예금주명 : " + ownerName);
System.out.println("현재잔고 : " + balance + "원");
}
// 입금기능
public void deposit(int amount) {
// 전달받은 입금금액(amount)를 현재잔고(balance)에 누적 후 출력
balance += amount;
System.out.println("입금하신 금액 : " + amount + "원");
// System.out.println("입금 후 현재잔고 : " + balance + "원");
showAccountInfo();
}
// 출금기능
public int withdraw(int amount) {
// 입력받은 출금금액(amount)을 현재잔고(balance)에서 차감 후
// 출금되는 금액(amount)을 리턴
// 단, 현재잔고가 출금금액보다 적을 경우 출금 불가
if(balance < amount) { // 현재잔고가 출금금액보다 적은지 판별(출금불가)
System.out.println("잔고가 부족하여 출금이 불가능합니다.");
System.out.println(
"출금할 금액 : " + amount + "원, 현재잔고 : " + balance + "원");
// return 타입이 int 이므로 반드시 리턴값 필수! => 0원 리턴
// return 0;
amount = 0;
} else { // 출금이 가능할 경우(현재잔고 >= 출금금액)
balance -= amount;
System.out.println("출금할 금액 : " + amount + "원");
System.out.println("출금 후 현재잔고 : " + balance + "원");
// return amount; // 출금금액 리턴
}
return amount;
// if 문 내에서 출금 실패 시 return 문에 의해 메서드를 종료하므로
// 출금이 가능한 경우의 코드는 else 문이 없어도 상관없다!
// if(balance < amount) { // 현재잔고가 출금금액보다 적은지 판별(출금불가)
// System.out.println("잔고가 부족하여 출금이 불가능합니다.");
// System.out.println(
// "출금할 금액 : " + amount + "원, 현재잔고 : " + balance + "원");
// // return 타입이 int 이므로 반드시 리턴값 필수! => 0원 리턴
// return 0;
// }
//
// balance -= amount;
// System.out.println("출금할 금액 : " + amount + "원");
// System.out.println("출금 후 현재잔고 : " + balance + "원");
//
// return amount; // 출금금액 리턴
}
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Getter / Setter 메서드 (0) | 2021.10.28 |
---|---|
[Java] 접근제한자 (0) | 2021.10.28 |
[Java] Class (0) | 2021.10.28 |
[Java] 객체지향(Method) (0) | 2021.10.28 |
[Java] 배열 테스트 문제 (0) | 2021.10.28 |