본문 바로가기

Algorithm 문제 풀이/Java

[Java] 객체, 클래스, 인스턴스

<코드라떼>의 "자바로 배우는 프로그래밍" 강의를 수강하면서 정리하는 글입니다.

 

객체

현실 세계에 존재하는 모든 것으로, 속성과 행위를 가지고 있고 물리적인 것을 포함하여 논리적인 어떤 것, 현실 세계에 존재하는 모든 것을 컴퓨터의 세계로 구현할 대상

 

객체의 속성과 행위

객체의 속성 : 객체가 가지고 있거나 설명할 수 있는 속성

객체의 행위 : 동사적인 느낌으로 객체가 할 수 있는 행위

 

 

예시) 컴퓨터

 

속성 행위
컴퓨터의 종류 사용되어진다(사람에 의해)
컴퓨터의 색깔 전원이 켜진다(사람에 의해)
컴퓨터의 운영체제 전원이 꺼진다(사람에 의해)
컴퓨터의 크기  
컴퓨터의 이름  
컴퓨터의 무게  

 

객체에 대해 배워야하는 이유

자바 언어가 객체지향의 특성을 가지고 있는 언어이고 현대에 만들어진 대부분의 프로그래밍 언어도 객체지향의 특성을 가지고 있기 때문이다. 이 특성을 가지고 있는 이유는 프로그램의 크기가 커지면서 구조적인 프로그래밍만 지원하는 언어로는 프로그램을 만들거나 유지 보수하는 것에 대해 한계를 느끼고 어떻게 더 잘 만들까 고민하다 나온 결론 중 하나가 객체지향 설계법이다.

 


클래스

현실 세계의 객체를 프로그랭의 세계로 가져와서 실제로 구현한 것으로, 프로그램에서 사용할 인스턴스를 생성하기 위한 틀

class라는 키워드를 이용하여 만들 수 있다.

 

// Person.java

class Person {

}

 

그리고 클래스를 통해 객체 인스턴스를 만들 수 있다.

 

 

인스턴

클래스를 통해 객체를 메모리에 적재한 실체

 

new 키워드를 통해 생성된 객체이고,  클래스를 인스턴스화했다고 하거나 객체를 메모리에 적재했다고 부른다. new 키워드는 새로 만든다는 의미로 인스턴스는 생성될 때 마다 별도의 메모리 공간에 적재된다. 따라서 두 참조 자료형 변수가 서로 다른 인스턴스를 참조하고 있으면 메모리 주소가 다르다.

 

// Main.java

Person person = new Person();

 

이때 맨 앞의 Person은 참조자료형이라고 부른다.

잠조자료형이란 기본자료형(byte, short, int, long, float, double, char, boolean)과 달리 class를 통해 만들어진 자료형이다. 참조자료형에는 String, Scanner 등도 있다. 

 

그래서 Person person은 참조자료형 변수라고 부른다. 참조자료형 변수는 인스턴스에 접근할 수 있는 참조값을 저장할 수 있다.

 

 

두 참조형 변수가 서로 다른 인스턴스를 참조하고 있는 경우

 

// Main.java

Person person1 = new Person();
Person person2 = new Person();

System.out.println(person1 == person2);

 

실행결과

 

person1 참조형 변수에 저장된 인스턴스 참조값과 person2 참조 자료형 변수에 저장된 인스턴스 참조값은 서로 다르다.

 

 

 

두 참조형 변수가 같은 인스턴스를 참조하고 있는 경우

 

// Main.java

Person person1 = new Person();
Person person2 = person1;

System.out.println(person1 == person2);

 

실행결과

 

 

객체와 배열 인스턴스

배열 인스턴스에는 배열에 저장하는 값들이 저장된다. 즉, 인스턴스에 접근할 수 있는 참조값을 저장한다.

Person 참조자료형 배열을 만들면 Person 인스턴스만 배열에 저장할 수 있으며 다른 자료형 인스턴스는 저장할 수 없다.

 

// Main.java

Person[] array = new Person[6];
array[0] = new Person();
array[1] = new Person();
array[2] = new Person();

for (int i = 0; i < 6; i++) {
    System.out.println(array[i]);
}

 

실행결과

 

Person[] array 변수는 Person 인스턴스를 저장할 수 있는 배열 인스턴스 new Person[6]에 접근할 수 있는 참조값을 저장하며 배열 인스턴스의 각 공간은 여러 개의 Person 인스턴스의 참조값을 저장한다.

참조자료형 배열 인스턴스에 아무것도 저장하지 않은 경우는 기본적으로 null값을 저장한다.

 

 

 


출처

https://www.codelatte.io/courses/java_programming_basic

 

자바 무료 강의 - 코드라떼

자바로 배우는 프로그래밍 강의 입니다. 이 강의만 들어도 프로그래밍의 절반은 배웁니다. 영어의 문법을 배운다고 회화를 잘 할 수 있는 것이 아니듯이 프로그래밍도 언어 문법을 배운다고 잘

www.codelatte.io