티스토리 뷰
Java 면접 질문에서 다음과 같은 질문과 답을 봤습니다.
클래스(Class)와 객체(Object)에 대해 설명하세요.
- Class는 객체(Object)를 만들어내기 위한 설계도 혹은 틀이라 할 수 있다.
- 객체(Object)는 설계도(Class) 기반으로 생성되며, 자신의 고유 이름과 상태, 행동을 갖는다.
- 여기서 상태는 필드(Field), 행동은 메서드(Method)라고 표현
- 객체(Object)에 메모리가 할당되어 실체는 '인스턴스'라고 부른다.
- 객체와 인스턴스는 동일한 의미라고 보면 된다.
출처: https://backendcode.tistory.com/236 [무작정 개발:티스토리]
클래스와 객체 분명 익숙하고 많이 들었는데 머리속으로 정리가 안됬습니다.
인터넷을 찾아보면 클래스는 붕어빵틀, 객체는 붕어빵이라고 비유합니다.
클래스
클래스란 객체를 정의한 설계도 또는 틀이라 정의할 수 있습니다. 즉, 클래스는 객체를 생성하는데 사용됩니다.
반대로 객체는 클래스에 의해 정의되고 설계된 내용을 기반으로 생성됩니다. 또한, 클래스로부터 객체를 만드는 과정을 인스턴스화라고 합니다.
클래스와 객체의 관계는 제품의 설계도와 제품과의 관계와 유사합니다. 제품 설계도 없이는 제품을 만들 수 없고, 제품 또한 제품 설계도 없이 만들 수 없기 때문입니다.
객체(Object)
사람과 동물, 물품, 어떤 논리나 사상, 개념, 철학 등과 같이 눈으로 볼 수 있는 것부터 볼 수 없는것까지 객체의 범주에 포함될 수 있습니다. 즉, 객체는 우리가 보고 느끼며 인지할 수 있는 모든 것을 의미합니다.
객체는 클래스에 의해 정의되고 설계된 내용을 기반으로 생성됩니다. 객체는 속성과 행위를 가집니다.
즉, 클래스를 통해 만들어진 객체가 실제로 사용할 수 있는 주체가 됩니다. 객체의 속성은 필드(변수), 행위는 메서드에 해당합니다. 클래스를 통해 생성된 객체를 클래스의 인스턴스라고 합니다.
인스턴스(Instance)
객체와 인스턴스는 크게 차이를 보이지는 않습니다. 따라서 두 용어를 혼용하여 사용하기도 합니다. 하지만,
엄밀히 말하면 객체는 모든 인스턴스를 포괄하는 넓은 범위를 가지고, 인스턴스는 해당 객체가 어떤 클래스로부터
생성된 것인지를 강조합니다.
클래스의 구성 요소
클래스는 class 키워드를 통해 정의할 수 있으며, 클래스의 이름은 대문자로 시작하는 것이 관례입니다.
public class ClassName { // 클래스
int studentNumber = 10; // #1 필드
public int MethodName{ // #2 메서드
}
ClassName { // #3 생성자
}
class ClassName2 { // #4 inner 클래스
}
}
클래스 안에는 필드, 메서드, 생성자, 이너 클래스 네 가지 구성 요소를 작성할 수 있습니다.
- 필드: 클래스의 속성(변수)을 나타냅니다.
- 메서드 : 클래스의 행위를 나타납니다. 객체 간의 데이터 전달 수단으로 활용됩니다. 외부로부터 값을 받을 수 있으며, 메서드의 실행 이후 값을 반환할 수 있습니다.
- 생성자 : 클래스의 객체를 생성하고 초기화하는 역할을 합니다. new 연산자를 통해 호출되며 반환 타입이 없습니다.
- 이너 클래스 : 클래스 내부에 존재하는 또 다른 클래스를 의미하고 중첩 클래스라고도 합니다. 클래스나 인터페이스 내부에서 선언하고 외부 클래스의 멤버들에 접근할 수 있습니다.
객체의 속성과 행위
만약, 자동차 한 대를 하나의 객체로 바라본다면 이 객체의 속성과 행위는 다음과 같이 정의할 수 있습니다.
속성: 모델, 문의 개수, 바퀴의 개수, 색상 등
행위: 시동 걸기, 앞으로 가기, 뒤로 가기, 정지하기 등
Class Car {
// 필드
String model; // 모델명(속성)
int wheels; // 자동차 바퀴 개수(속성)
int doors; // 자동차 문의 개수(속성)
String color; // 자동차 색상(속성)
void powerOn() { // 메서드
// 전원을 켜는 행위
}
void accelerate() { // 메서드
// 앞으로 가는 행위
}
void backwoards() { // 메서드
// 뒤로 가는 행위
}
void stop() { // 메서드
// 정지 행위
}
}
출처: https://ittrue.tistory.com/117 [It is true]
추천 유튜브
https://www.youtube.com/watch?v=nHR1hfIrBwI
'CS > JAVA' 카테고리의 다른 글
ArrayList 배열[JAVA] (0) | 2024.10.20 |
---|---|
배열 [JAVA] (0) | 2024.10.20 |
JAVA 메모리 영역(Stack, Heap, Method) (0) | 2024.06.04 |
컴파일(Compiled)와 인터프리터(interpreter) 차이 (0) | 2024.05.23 |
[JAVA] JVM이란? (JDK, JRE, 가비지 콜렉터 ) (0) | 2024.05.23 |
- Total
- Today
- Yesterday
- 그린대학교
- java
- 오류
- 정보처리기사
- wsl
- 해시
- Queue
- 스택
- 자료구조
- form
- (롯데)기업맞춤형 프로젝트
- Git
- 공공데이터포탈
- 국비교육
- MySQL
- 프로그래머스
- JWT
- 김영한
- 메시지 오류
- docker
- JPA
- 덱
- 국비지원
- deque
- 백준
- 인텔리제이
- static
- 국비
- CSS
- git 베포
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |