// 객체 접근을 하기 위해 public 사용!
public class Bankbook {
// 은행 프로그램을 만든다고 가정!
// 통장 정보를 저장할 수 있는 우리만의 자료형 설계도면
// 1. Field(Data, 속성)
// 잔액 (money)
private int money;
// 이름 (name)
private String name;
// private를 하면 클래스 내부에 존재하는 데이터는 외부에서 함부로 접근할수 없게끔
// 정보은닉을 지켜주어야 한다! (사용자가 임의로 변경하는 것을 막기!)
// 2. Method(Logic, 기능, 행위)
// 입금하다(deposit)
// --> return type 없이, 매개변수로 정수형 하나 받아오기
// 로직은 아직 적지 말 것.
// 메소드 구조
// 접근제한자 리턴타입 메소드 이름(매개변수){로직 작성}
public void dePosit(int money) {
this.money += money;
// this 키워드
// this.money --> this가 가지고 있는 money
// == Bankbook.money
// : 현재 Class 그 자체(나 자신)을 지칭하는 키워드
}
// 출금하다(withdraw)
// --> return type 없음, 매개변수로 정수형 하나 받아오기
// 로직은 아직 적지 말 것!
public int withDraw(int money) {
// 현재 잔액보다 출금하려는 돈이 많을 때 --> "잔액이 부족합니다." 출력
// 현재 잔액보다 출근하려는 돈이 적을 때 --> 잔액 변경해주기(누적)
if (this.money < money) {
System.out.println("잔액이 부족합니다.");
} else {
this.money -= money;
}
return money;
}
// 잔액확인하기(showMoney)
// --> return type 있음! int 형태를 되돌려주기
// 매개변수는 없음. 현재 잔액을 리턴
public int showMoney() {
// 잔액을 보여줌으로 필드상에 있는 money 변수를 리턴함
return money;
}
}
public class BankbookMain {
public static void main(String[] args) {
// 1. Bankbook 설계도면을 기반으로 bank1 객체 생성
Bankbook bank1 = new Bankbook();
// 2. bank1의 잔액을 1000원 추가
bank1.dePosit(1000);
// 3. bank1에 7000원 입금
bank1.dePosit(7000);
System.out.println(bank1.showMoney());
// 4. bank1에 5000원 출금
bank1.withDraw(5000);
// 5. bank1에 잔액을 출금
System.out.println("고객님의 잔액은 " + bank1.showMoney());
}
}
BankbookMain 클래스
Bankbook
2-1) getter 메소드 (가져오다)
2-2) setter 메소드 (세팅하다)
필드값을 가져올때 쓰는 메서드 겟터
세팅할때 사용할때 쓰는 메서드 세터
getter 메소드에는 ( 매개변수가 없다. )
setter 메소드에는 ( 값을 대입해야 함으로 )
2-1 ) getter 메소드 (가져오다)
: private 숨겨져 있는 필드의 데이터에 접근해서
- 다른 클래스에서 데이터를 가져갈 수 있게 만들어주는 메소드
2-2 ) setter 메소드 (세팅하다 필드 변수에 값 넣어주기)
- setter : private 으로 숨겨져있는 필드의 데이터를 수정하고 싶을때 사용하는 메소드
1. Generate getter and setters.... 누르고
2. Select All 버튼 누르기
3. 해당 필요하는 getter , setter가 표기됨
4. Generate 버튼 누르면 getter , setter 완료
(시험 예상)
2-3) 생성자 특징 !!
- 리턴타입을 지정하지 않는다 ! (void도 작성안함!)
- 생성자의 이름은 클래스의 이름과 동일해야한다.(대소문자까지)
- 생성자도 결국 메소드() 이다.
- 매개변수가 아무것도 없는 생성자를 기본 생성자(default constructor)라고 부르는데 생략이 가능하다.
단, 새로운 나만의 생성자를 만들게 되면 기본 생성자는 덮어 씌워져 버린다.
(기본 생성자(default constructor)가 사라져 버린다.)
- 생성자도 오버로딩(중복정의)이 가능하다.
public Student(String name, String number, int age, int scoreJava, int scoreWeb, int scoreAndroid) {
this.name = name;
this.number = number;
this.age = age;
this.scoreJava = scoreJava;
this.scoreWeb = scoreWeb;
this.scoreAndroid = scoreAndroid;
}
// 메소드 오버로딩
public Student() { // 기본 생성자
}