클래스와 인스턴스
객체를 이루는 것은 데이터와 기능이다.
과일장수
1. 과일장수는 과일을 판다.
2. 과일장수는 사과 20개, 오렌지 10개를 보유하고 있다.
3. 과일장수의 과일판매 수익은 50,000원이다.
- 첫번쟤는 행동을 의마한다.
- 두 번째와 세 번째는 과일장수의 상태를 의미한다.
- 이처럼 객체는 하나 이상의 상태 정보와 하나 이상의 행동으로 구성 되며, 상태 정보는 변수를 통해서 표현 되고, 행동은 메소드를 통해서 표현된다.
보유하고 있는 사과의 수 : int numOfApple
판매수익 : int myMoney;
클래스라는 틀을 기반으로 객체가 생성된다.
class FruitSeller {
int numOfApple = 20;
int myMoney = 0; //변수선언
//메소드 정의
public int SaleApple(int money) {
int num = money/1000;
numOfApple -= num;
myMoney += money;
return num;
}
}
final 키워드
class FruitSeller {
final int APPLE_PRICE = 1000;
int numOfApple = 20;
int myMoney = 0; //변수선언
//메소드 정의
public int SaleApple(int money) {
int num = money/APPLE_PRICE;
numOfApple -= num;
myMoney += money;
return num;
}
//'몇개나 파셨어요?'의 답변
public void showSaleResult() {
System.out.println("남은 사과 :" + numOfApple);
System.out.println("판매 수익 :" + myMoney);
}
}
- final은 한번 값이 결정되면 변경이 불가능하다.
class FruitBuyer {
int myMoney = 5000;
int numOfApple = 0;
//사과를 구입
publoc void buyApple(FruitSeller seller, int money) {
numOfApple += seller.saleApple(money);
myMoney -= money;
}
public void showBuyResult() {
System.out.println("현재 잔액 : "+ myMoney);
System.out.println("사과 개수 : "+ numOfApple);
}
}
클래스를 기반으로 객체 생성하기
- 자바에서 정의하고 있는 객체 생성방법
ClassName name = new ClassName();
- 객체를 생성하는 행위를 가리켜 ‘인스턴스화 한다’고 표현한다.
참조변수와 메소드의 관계
FruitSeller seller1 = new FruitSeller();
instMethod(seller1);
//매개변수 형이 FruitSeller이다.
public void instMehod(FruiteSeller seller2) {
}
- 이 경우 seller1와 seller2가 하나의 객체를 동시에 참조하는 상황이다.
객체간의 대화 방법(Message Passing 방법)
- 하나의 객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 메소드 호출을 기반으로 한다.
- 이러한 형태의 메소드 호출을 가리켜 메시지 전달이라 한다.