Home 클래스와 객체
Post
Cancel

클래스와 객체

클래스와 객체의 정의와 용도

클래스

정의 : 객체를 정의해놓은 것. 또는 객체의 설계도 또는 틀.

용도 : 객체를 생성하는데 사용된다.

객체

정의 : 실제로 존재하는 것. 사물 또는 개념

용도 : 객체가 가지고 있는 기능과 속성에 따라 다름

객체와 인스턴스

클래스로부터 객체를 만드는 과정 → 클래스의 인스턴스화

만들어진 객체 → 그 클래스의 인스턴스

객체

모든 인스턴스를 대표하는 포괄적인 의미

ex) 책상은 객체다.

인스턴스

어떤 클래스로부터 만들어진 것인지를 강조하는 구체적인 의미

ex) 책상은 책상클래스의 인스턴스다.

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

객체는 속성과 기능으로 이루어져 있다.

속성과 기능을 객체의 맴버(구성원)라 한다.

속성은 맴버변수로 기능은 메서드로 정의한다.

인스턴스의 생성과 사용

클래스를 선언한 것은 설계도를 작성한 것에 불과하고 인스턴스를 생성해야 객체를 사용 가능할 수 있다.

1
2
3
4
5
6
클래스명 변수명;         // 클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후 객체의 주소를 참조변수에 저장

ex)
TV t;
t = new TV();

인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.

객체 배열

객체를 배열로 다루는 것

1
TV tv1, tv2, tv3;    ->    TV[] tvArr = new TV[3];

객체 저장

위에는 그저 객체를 다루기 위한 참조변수들이 만들어진 것이고 각 요소에 저장해야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TV[] tvArr = new TV[3]; // 참조변수 배열을 생성

// 객체를 생성해서 배열의 각 요소에 저장
tvArr[0] = new TV();
tvArr[1] = new TV();
tvArr[2] = new TV();

// 한줄로 작성
Tv[] tvArr = {new Tv(), new Tv(), new Tv()};

// 객체의 수가 많으면 for문 사용
Tv[] tvArr = new Tv[100];

for(int i = 0; i < tvArr.length; i++) {
	tvArr[i] = new Tv();
}

클래스의 또 다른 정의

클래스는 “객체를 생성하기 위한 틀”이며 “속성과 기능으로 정의되어있다.”고 했다. 이것은 객체지향이론의 관점에서 내린 정의이고, 프로그래밍적인 관점에서 클래스의 정의와 의미는 “데이터와 함수의 결합”이다.

  1. 변수 - 하나의 데이터 저장
  2. 배열 - 같은 종류의 여러 데이터를 하나의 집합으로 저장
  3. 구조체 - 종류에 관계없이 하나의 집합으로 저장
  4. 클래스 - 데이터와 함수의 결합(구조체 + 함수)

사용자 정의 타입

프로그래머가 서로 관련된 변수들을 묶어 하나의 타입으로 추가하는 것

객체지향언어에서는 클래스가 곧 사용자 정의 타입이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 비객체지향적 코드
int hour1, hour2, hour3;
int minute1, minute2, minute3;
float second1, second2, second3;

// 객체지향적 코드
// 1. 클래스
class Time {
	int hour;
	int minute;
	float second;
}

// 2. 객체배열
int[] hour = new int[3];
int[] minute = new int[3];
float[] second = new float[3];

객체지향언어에서는 제어자와 메서드를 이용하여 조건들을 코드에 쉽게 반영할 수 있다.

출처

자바의 정석

https://velog.io/@jacobhboy/자바-12.-클래스와-객체