본문 바로가기

JAVA/복습

객체와 클래스

 

 

 

 

예를 들어 우리가 자동차를 만든다고 가정해보자.

자동차를 만들려면 무엇이 필요할까? 

 

만들 자동차의 설계도가 필요하다!

 

객체지향 프로그래밍에서도 마찬가지이다.

메모리에서 사용하고 싶은 객체가 있다면 우선 설계도로 해당 객체를 만드는 작업이 필요하다.

 

자바에서 설계도가 바로 '클래스' 이다.

 

클래스에는 객체를 생성하기 위해서 필드와 메소드가 정의되어 있다.

 

클래스로부터 만들어진 객체를 해당 클래스의 '인스턴스'라 한다.

 

즉, 자동차란 객체는 자동차 클래스의 인스턴스와 같다.

 

그리고 클래스로부터 객체를 만드는 과정을

'인스턴스화'라고 한다.

 

그래서 이게 무엇을 뜻하는 걸까?

 

하나의 클래스로부터 여러개의 인스턴스를 만드는 것이 가능해진다.

 

(동일한 설계도로 여러대의 자동차를 만드는 것과 같음)

 

 


 

 

- 클래스 선언

// Car 클래스 선언
public class Car{

}

 

- 클래스로부터 객체 생성

 

// 객체 생성
public class Car Example{
	public static void main(String[] args){
    
    	Car c1 = new Car(); //생성 == 인스턴스
        System.out.println("c1 변수가 Car 객체를 참조합니다.");
        
        Car c2 = new Car();
        System.out.prinln("c2 변수가 또 다른 Car 객체를 참조합니다);
    
    }


}

위와 같이 실행하면 메모리에 클래스 변수와 객체가 생성된다.

 

(Car라는 클래스는 하나지만 new 연산자를 사용한 만큼 객체가 메모리에 생성됨.)

 

이러한 객체들은 Car 클래스의 인스턴스.

 

c1과 c2는 같은 클래스로부터 생성되었지만

 

각각의 Car 객체는 자신만의 고유 데이터를 가지고 메모리에서 활동한다.

(c1과 c2가 참조하는 Car객체는 완전히 독립된 다른 객체)

 

 

 


클래스의 용도

 

1. CAR == 라이브러리 (API:Application Program Interface)용

: 라이브러리 클래스는 다른 클래스에서 이용할 목적으로 설계된다.

 

2. CarExample == 실행 클래스

: 프로그램의 실행 진입점인 main() 제공하는 역할을 한다.

 

 

 


클래스의 구성

: 클래스에는 객체가 가져야 할 구성 멤버가 선언된다.

 

- 필드(Field) : 객체의 데이터가 저장되는 곳

- 생성자(Constructor) : 객체 생성 시 초기화 역할

- 메소드(Method) : 객체의 동작에 해당하는 실행 블록

 

public class ClassName{

//Field
// 생성자와 메소드 전체에서 사용된다.
// 객체가 소멸되지 않는 한 객체와 함께 존재한다.
int fieldname;

//Constructor
// 객체 생성 시 초기화를 담당, 클래스 이름으로 되어있고 리턴 타입이 없다.
ClassName() {
	...
}

//Method
// 객체 간의 데이터를 전달하는 수단
// 호출한 곳으로부터 매개값을 받아 실행에 이용하고,
// 실행 후 결과 값을 호출한 곳으로 돌려줄 수 도 있다.
void methodName(){
	...
  }

}

 

 

'JAVA > 복습' 카테고리의 다른 글

String 클래스의 Method  (0) 2021.10.04
생성자(constructor)  (0) 2021.10.02
객체 지향 프로그래밍  (0) 2021.09.10
null과 NullPointerException  (0) 2021.09.09
변수(variable)  (0) 2021.09.09