728x90
- 세상의 모든 사물을 단순하게 추상화해보면 속성(데이터)과 기능 2가지로 설명할 수 있다.
클래스란?
- 객체를 만들어 내기 위한 틀, 설계도이며 만들어 낼 객체의 속성(데이터, 멤버 변수)과 기능(메소드)의 집합을 담아 놓은 것
객체란?
- 클래스라는 설계도를 사용해서 만들어지는 실체
- 클래스로 선언된 변수를 객체라고 한다.
- 각 객체에는 멤버 변수의 값에 다른 값이 들어갈 수 있다.
- 객체는 자신의 메소드를 통해 자신의 멤버 변수에 접근할 수 있다.
- 객체의 메소드 내부에서 접근하는 멤버 변수는 객체 자신의 멤버 변수다.
Person b; // 객체 생성
인스턴스란?
- 객체가 메모리에 할당된 상태
- 런타임에 구동되는 객체
- 런타임이란 프로그램이 실행될 때 그 프로그램이 머무는 공간
- 인스턴스는 AWS 클라우드의 가상 서버라는 말로도 쓰인다.
b = new Person("윤태정", 72, true); // 메모리에 할당 -> 인스턴스화
예시
package jpabook.jpashop;
public class Person {
// 멤버 변수(속성)
String name;
int age;
boolean isSmoke;
public Person(String name, int age, boolean isSmoke) {
this.name = name;
this.age = age;
this.isSmoke = isSmoke;
}
public void stopSmoking() {
this.isSmoke = false;
}
public void startSmoking() {
this.isSmoke = true;
}
public static void main(String[] args) {
Person a = new Person("정태윤", 27, false); // 객체를 생성하자마자 인스턴스화
a.startSmoking();
Person b; // 객체 생성
b = new Person("윤태정", 72, true); // 메모리에 할당 -> 인스턴스화
b.stopSmoking();
}
}
정리
- 세상에 있는 모든 사물들을 객체 지향적인 패러다임으로 단순하게 추상화하면 속성과 기능을 가진 객체로 생각할 수 있다.
- 나를 기준으로 생각했을 때, 속성은 이름, 나이, 성별 등이 있고, 기능은 걷는다, 뛴다, 먹는다 등이 있다.
- 이런 추상화를 프로그래밍 세계로 가져와 속성은 멤버 변수로 나타내고, 기능은 메소드로 나타낼 수 있다.
- 이런 나라는 사물을 만들기 위한 설계도가 클래스이다.
- 클래스는 틀, 설계도
- 객체는 클래스라는 설계도로부터 만들어지는 실체, 변수
- 인스턴스는 객체가 메모리에 할당된 것
728x90
'CS > 그외' 카테고리의 다른 글
라이브러리 vs 프레임워크 (1) | 2024.07.16 |
---|---|
오버로딩과 오버라이딩 (0) | 2024.07.12 |
static 키워드 (0) | 2024.07.12 |
동기, 비동기 (0) | 2024.04.29 |