난 정말 JAVA를 공부한 적이 없다구요-2

클래스와 인스턴스

객체를 이루는 것은 데이터와 기능이다.

과일장수
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 방법)

  • 하나의 객체가 다른 하나의 객체에게 메시지를 전달하는 방법은 메소드 호출을 기반으로 한다.
  • 이러한 형태의 메소드 호출을 가리켜 메시지 전달이라 한다.