[Java] 2. 클래스(Class)와 객체(Object)


클래스(Class)와 객체(Object) 그리고 인스턴스(Instance)



1. 클래스(Class)와 객체(Object)


1-1. 클래스 정의

  • 정의: 객체를 정의해 놓은 것(설계도)
  • 용도: 객체를 생성하는데 사용 됨


1-2. 클래스 특징

  • 현실세계에서의 건축 설계도, 자동차 설계도 개념이 자바에서는 클래스이다.
  • 클래스에는 객체를 생성하기 위한 필드와 메서드가 정의
  • 클래스로 만든 객체를 인스턴스(Instance)라고 하고 그 과정을 인스턴스화라 한다.


클래스는 객체를 만들기 위한 설계도 이고

클래스(설계도)로 만들어진 것이 인스턴스(객체)이다.


클래스와 객체

public class CreateCustomer {

	public static void main(String[] args) {
		//Customer 클래스로 만들어진 인스턴스 객체(customer1)
		Customer customer1 = new Customer();
		customer1.customerId = "100001";
		customer1.customerName = "김재석";
		customer1.phoneNumber = "01012346789";

		//Customer 클래스로 만들어진 인스턴스 객체(customer2)
		Customer customer2 = new Customer();
		customer2.customerId = "100002";
		customer2.customerName = "오병훈";
		customer2.phoneNumber = "01043216789";
	}
}



2. 객체의 구성요소 - 속성과 기능

2-1. 객체의 구현

=> 객체의 속성은 멤버변수로 객체의 기능은 메서드로 구현한다.

  • 속성(property) : 멤버변수
  • 기능(function) : 메서드


객체의 구현

//고객을 만들기 위해 Customer 클래스
public class Customer {
	
	//객체의 속성(멤버변수)
	public int customerId;
	public String customerName;
	public String phoneNumber;
			
	//객체의 기능(메서드)
	public void getCustomerInfo() {
		System.out.println(customerName + ":" + phoneNumber);
	}
	
	public String getCustomerName() {
		return customerName;
	}
}



3. 인스턴스(Instance)

Customer 클래스는 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 설계도
클래스로 만든 객체를 인스턴스라고 하고 그 과정을 인스턴스화라 한다.


new 생성자로 인스턴스 생성

public class CreateCustomer {

	public static void main(String[] args) {
		//지역변수 customer1에 할당된 값이
		//생성 된 인스턴스 객체 실제 주소값을 가리킴
		Customer customer1 = new Customer();
		customer1.customerId = "100001";
		customer1.customerName = "김재석";
		customer1.phoneNumber = "01012346789";

		Customer customer2 = new Customer();
		customer2.customerId = "100002";
		customer2.customerName = "오병훈";
		customer2.phoneNumber = "01043216789";
	}
}

1 ) 지역변수 customer1을 참조변수라고 하고 customer1에 저장 된 값을 참조 값이라고 한다.

  • 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
  • 참조 값 : 생성된 인스턴스의 메모리 주소 값


2 ) 클래스(Customer)에 정의 된 내용과 생성된 인스턴스 객체는 힙(동적) 메모리 영역에 저장
메서드를 호출하거나 인스턴스 객체 주소값을 저장하는 참조변수는 스택 메모리 영역에 저장




[참고]