[TIL] 객체 & 클래스 & 인스턴스

yurinnn·2024년 2월 2일
0

Today I Learn

목록 보기
4/11

객체란?
상태, 동작, 고유 식별자를 가진 모든 것, 필요한 자료 구조와 이에 수행되는 함수들을 가진 하나의 독립된 존재이다. 객체의 상태는 속성값에 의해 정의된다.
소프트웨어 세계에 구현할 대상이며 속성과 기능을 가지는 프로그램 단위를 뜻한다.

  • 공통 속성을 공유하는 객체들의 집합을 클래스 라고 한다. (객체 < 클래스)
    객체에 속성과 기능을 넣어줄 설계도를 뜻한다. (객체를 만들어 내기 위한 설계도 혹은 틀)
    ex) 아이폰 프로그램이 있다고 하면 속성으로는 색상, 용량 등이 있고 기능으로는 전화 등의 기능

  • 속성(property) 은 흔히 말하는 멤버 변수, 파라미터를 말하고 기능은 메서드를 의미한다.

    name: '윤아준' // name : 속성 / '윤아준' : 속성값
  • 식별자 란 어떤 객체를 다른 객체와 구분하는 데 사용하는 객체의 속성(property)이다.
    ex) ‘김유진’ 이라는 식별자를 가진 객체의 속성과 속성값인 키:160cm 에서 속성값이 변하더라도 ‘김유진’ 이라는 고유 식별자로 다른 객체와 구분할 수 있다.

  • 인스턴스 : 클래스에 따라 메모리상에 구현된 실체를 뜻합니다.
    oop의 관점에서 객체가 메모리에 할당되어 실제 사용될 때 ‘인스턴스’라고 부른다.

💡 클래스의 타입으로 선언되었을 때 객체 라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스 라고 부른다.

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}
  • 객체는 '인스턴스 변수의 집합'이므로 객체를 저장/전송하는 것은 객체의 인스턴스 변수의 값을 저장/전송하는 것과 동일하다.

💡 ‘방금 인스턴스화하여 레퍼런스를 할당한’ 객체를 인스턴스라고 말하지만, 이는 원본(추상적인 개념)으로부터 생성되었다는 것에 의미를 부여하는 것일 뿐 엄격하게 객체와 인스턴스를 나누긴 어렵다.

profile
슬기로운 개발 생활

0개의 댓글

관련 채용 정보