728x90
반응형
Person 클래스의 인스턴스(p) 생성
예시
이름 : 홍길동, 나이 : 20, 배고픔 : false 값 저장
외부의 다른 클래스 에서 Person 클래스의 인스턴스에 접근하기 위해서는
참조변수 p를 통해 접근 필수!
Person p = new Person();
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("밥");
} // main() 메서드 긑
} // 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() { //매개변수 x -> 소괄호가 빈 것
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;
}
}
문제
은행계좌(Account) 클래스 정의
[ 멤버변수 선언 ]
- 계좌번호 (accountNo, 문자열)
예금주명 (ownerName, 문자열)
현재잔고 (balance, 정수)
[ 메서드 정의 ]
- 계좌번호, 예금주명, 현재잔고를 출력하는 showAccountInfo()메서드
ex) 계좌번호 : 111-1111-111
예금주명 : 홍길동
현재잔고 : 10000원
- 입금 기능을 수행하는 deposit() 메서드
=> 입금할 금액(amount, 정수)을 전달받아 현재잔고(balance)에 누적 한 후
입금된 금액과 입금 후 현재잔고를 출력
ex) "입금하신 금액 : XXXXX원"
"입금 후 현재잔고 : XXXX원"
=> 단, 리턴값은 없음
- 출금 기능을 수행하는 withdraw()메서드
=> 출금 될 금액(amount, 정수)를 전달받아 현재잔고(balance)에서 차감 후
출금 될 금액과 출금 후 현재잔고를 출력
ex) "출금 할 금액 : XXXX원" * "출금 후 현재잔고 : XXXX원"
=> 단, 출금 기능을 수행하기 전 현재잔고와 출금할 금액을 비교하여
현재 잔고가 출금할 금액보다 적을 경우 출금을 수행하지 않고 다음과 같이 출력
ex) "잔고가 부족하여 출금이 불가능합니다."
"출금할 금액 : XXXX원, 현재잔고 : XXXX원"
=> 리턴 값 있음. (출금 할 금액에 해당하는 금액 리턴)
public class Test2 {
public static void main(String[] args) {
Account acc = new Account();
acc.accountNo = "111-1111-111";
acc.ownerName = "홍길동";
acc.balance = 10000;
acc.showAccountInfo();
System.out.println("------------------------");
acc.deposit(5000);
//현재 잔고보다 적거나 같은 금액을 출력하는 경우 (출금 가능)
System.out.println("------------------------");
int money = acc.withdraw(5000);
System.out.println("출금된 금액 : " + money + "원");
//현재 잔고보다 많은 금액을 출금하는 경우 (출금 불가)
money = acc.withdraw(100000);
System.out.println("출금된 금액 : " + money + "원");
}
}
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) {
balance += amount; //전달받은 입금금액(amount)를 현재잔고(balance)에 누적 후 출력
System.out.println("입금하신 금액 : " + amount);
System.out.println("입금 후 현재 잔고 :" + balance);
}
public int withdraw(int amount) {
if(amount <= balance) { //입력받은 출금금액(amount)를 현재잔고(balance)에 차감 후
//출금되는 금액(amount)를 리턴
//단, 현재잔고가 출금금액보다 적을 경우 출금 불가
balance -= amount;
System.out.println("출금 할 금액 : " + amount + "원");
System.out.println("출금 후 현재 잔고 : " + balance + "원");
return amount; //출금금액 리턴
}else {
System.out.println("잔고가 부족해서 출금이 불가능합니다.");
System.out.println("출금할 금액 : " + amount +", 현재잔고 : " + balance + "원");
return 0;
}
}
}
else 생략
if문 내에서 출금 실패 시 return 문에 의해 메서드를 종료하므로
출금이 가능한 경우의 코드는 else 문이 없어도 상관없음.
if(balance < amount) {
System.out.println("잔고가 부족해서 출금이 불가능합니다.");
System.out.println("출금할 금액 : " + amount +", 현재잔고 : " + balance + "원");
return 0;
}
balance -= amount;
System.out.println("출금 할 금액 : " + amount + "원");
System.out.println("출금 후 현재 잔고 : " + balance + "원");
return amount; //출금금액 리턴
728x90
반응형
'BackEnd > Java' 카테고리의 다른 글
0908 JAVA - Constructor (1) | 2022.09.10 |
---|---|
0907 JAVA - 접근제한자, Getter / Setter (2) | 2022.09.07 |
0831 JAVA - 클래스 정의 (0) | 2022.08.31 |
0831 JAVA - method 호출 (0) | 2022.08.31 |
0826 JSP - JavaBean, 회원가입 로그인 페이지 만들기 (0) | 2022.08.26 |