Skip to Content
Suffering builds character
아카이브10.Java특징부록1.class의 어원

1.class의 어원

1. Class

야구장에 보이는 수많은 관객들을 보았을 때 일반적인 사고 방식은?

baseball

A - 개별적인 관중들을 한 명 한 명 바라보면서 신원(?)을 파악하기 시작함

"전광판 옆측 좌석에 학교 선생님이 계시고, 오른쪽 두 번째 블럭 옆에는 내 친구 OO가 있고, 오른쪽 조명 아래쪽에는 OO가 있다."

B - 관중들을 묶어서 하나의 ‘분류’ 개념으로 생각한다.

"사람이 진짜 많다."

인간은 사물을 하나하나 개별적으로 인식하지 않고, 공통된 부분끼리 묶어서 분류(classify)할 수 있음 → 인간이 가진 주의력(Attention)의 한계 때문

2. 분류, Classification

객체 지향에서는 세상에 존재하는 모든 객체들을 분류가 가능하다고 가정함

개별적인 실체로 존재하는 뽀로로와 핑구는 펭귄(Penguin)으로 분류(classify)할 수 있음 proro

2-1. Penguin 클래스 작성

Penguin.java
class Penguin { ... }

펭귄의 생김새를 살펴보고, 몇 가지 속성과 행위를 나열

펭귄이 가진 속성 - field, 필드

  1. 이름(name) - 펭귄에게 이름을 지을 수 있음
  2. 나이(age) - 펭귄은 생명체이기 때문에 인간 기준으로 나이를 부여할 수 있음
  3. 몸무게(weight) - 펭귄은 몸무게가 있음

펭귄이 할 수 있는 행위 or 기능 - method, 메서드

  1. 생선을 먹는다 - eat()
  2. 잠을 잔다 - sleep()
  3. 같은 펭귄끼리 울음소리를 낸다 - sing()

2-2. 도출한 내용을 토대로 펭귄의 속성과 행위를 작성

Penguin.java
class Penguin { int age; int weight; int height; void eat() { System.out.println("생선을 먹는다."); } // sleep(), sing() }

이처럼 펭귄 클래스(Penguin)를 활용하여 뽀로로를 생성할 수 있음

2-3. Penguin 클래스를 토대로 뽀로로 인스턴스(객체) 생성

Main.java
Penguin pororo = new Penguin();

2-4. pororo 이름 짓기

Main.java
pororo.name = "뽀로로"; // pororo는 변수명이지 proro 객체가 가진 name 필드가 아님

2-5. pororo에게 생선 주기(?)

Main.java
pororo.eat(); // 생선을 먹는다.

클래스
개(Dog), 사람(Person), 고양이(Cat), 시계, 음료

클래스는 일반적으로 분류에 대한 개념이지, 실체하진 않음(사람, 펭귄)

하지만, 객체(인스턴스)는 실체함(뽀로로, 핑구)
→ 실체하는 것은 인스턴스(Instance)

엄밀하게 보면, 붕어빵틀 역시 현실에 실체하기 때문에 클래스로 분류하면 객체 지향 개념과 다소 차이가 있을 수 있음

치와와, 진돗개, 불독 … 등 → ‘개’
박서준, 한소희, 유재석 … 등 → ‘사람’

정리하면, class로 작성되는 대상은 주로 현실에 실체, 실존하지 않는 개념적인 대상으로 지정하는 편
따라서 class는 분류(classification)에 대한 개념이고, 실체하지 않음
ex) 사람, 펭귄, 개

반대로 클래스를 통해 생성된 객체(인스턴스)는 실체함(메모리 상에 개별적인 주소값으로 존재)
ex) 정해인, 뽀로로, 핑구

기술적으로 Person 클래스를 활용하여 ‘정해인’ 객체를 만들 수 있음
객체를 보다 구체적으로 표현하면 인스턴스(Instance)라고 표현하기도 함

Last updated on