Patrick's 데이터 세상

클래스, 인스턴스 본문

Programming/Java

클래스, 인스턴스

patrick610 2020. 6. 23. 00:25
반응형
SMALL

 객체지향 프로그래밍

   자바는 객체지향 프로그래밍을 지향합니다. 
   객체는 '물건, 또는 대상'을 의미합니다.

 객체를 이루는 데이터와 기능

   다음 문장을 가정해보겠습니다.

   ·  과일장수는 과일을 팝니다.
   ·  과일장수는 사과 20개, 오렌지 10개를 보유하고 있습니다.
   ·  과일장수의 과일 판매 수익은 50,000원입니다.   

이 문장에서 과일장수의 '행동', 과일장수의 '상태'로 구분할 수 있습니다.
이처럼 객체는 하나 이상의 상태 정보(데이터)와 하나 이상의 행동(기능)으로 구성이 되며, 
상태 정보는 변수를 통해서 표현되고, 행동은 메소드를 통해 표현됩니다.

   ·  보유하고 있는 사과의 수 → int numOfApple;
   ·  판매 수익 → int myMoney;

   ·  과일장수의 행위인 과일 판매 메소드

int saleApple(int money)		// 사과 구매액이 메소드의 인자로 전달
{
	int num = money/1000;		// 사과가 개당 1000원이라 가정
    
    numOfApple -= num;			// 사과의 수가 줄어들고,
    myMoney += money;			// 판매 수익이 발생한다.
    return num;					// 실제 구매가 발생한 사과의 수를 반환
}

   

 클래스(class)라는 틀을 기반으로 객체가 생성

   객체를 생성하기 전에 객체의 생성을 위한 '틀(mold)'을 만들어야 합니다.

class FruitSeller					// 클래스 선언
{
    int numOfApple=20;					// 변수 선언
    int myMoney=0;
    
    public int SaleApple(int momey)			// 메소드 정의
    {
    	int num = money/1000;
        numOfApple -= num;
        myMoney += money;
        return num;
    }
}

   "FruitSeller라는 이름의 틀을 정의합니다."


 객체 생성  

   클래스명 객체명 = new 생성자(매개변수);

class Person 
{ 
  boolean 성별; 
  float  키; 
  double 몸무게; 
  String 인지도; 
  String 성격; 
  String 취미; 
} 
public class Exam_01
{
  public static void main(String[] args)
  { 
  	Person p1 = new Person(); 
  } 
} 

    
   · 클래스와 인스턴스 차이

   객체의 사전적인 의미는 '실제로 존재하는 것'이고 떤 클래스에서 생성된 객체는 인스턴스(Instance)라고 부른다. 
사실 클래스와 인스턴스의 형태상의 차이는 없다. 오히려 저렇게 구분해 놓지 않는다면 클래스와 인스턴스는 같다고 봐도 무방할 정도로 닮아 있다. 
하지만 클래스를 통해 생성된 각각의 인스턴스들은 서로 다른 각자의 이름을 가지고 있고, 각각이 그 속성과 기능을 독립적으로 갖는다는 점이 중요하다.

 

 생성자

   클래스로부터 객체가 생성될 때 초기화 과정을 기술하는 특수한 메소드입니다.

class Number
{
    int num;

    public Number(int n)			// 생성자
    {
      num=n;
      System.out.println("인자 전달 : "+n);
    }
    public int getNumber()
    {
    	return num;
    }
}
class Constructor1
{
	public static void main(String[] args)
    {
    	Number num1 = new Number(10);			// 객체 생성 동시에 호출
		System.out.println("메소드 반환 값 : "num1.getNumber());
        
        Number num2 = new Number(20);
        System.out.println("메소드 반환 값 : "+num2.getNumber());
    }
}

· 실행결과

인자 전달 : 10
메소드 반환 값 : 10
인자 전달 : 20
메소드 반환 값 : 20

   ⊙ 생성자가 되기 위한 조건

      · 클래스의 이름과 동일한 이름의 메소드
      · 반환형이 선언되어 있지 않으면서, 반환하지 않는 메소드

반응형
LIST

'Programming > Java' 카테고리의 다른 글

static 변수(클래스 변수)  (0) 2020.06.23
자바 이름 생성 규칙(Naming Rule)  (0) 2020.06.23
메소드의 재귀호출  (0) 2020.06.23
method 메소드  (0) 2020.06.23
continue & break  (0) 2020.06.23
Comments