오늘은 인스턴스에 대해 공부해보았다.
인스턴스란 클래스로부터 생성된 객체이며, 힙메모리에 멤버변수의 크기에 따라 메모리가 생성된다.
new라는 키워드를 사용하여 여러개의 인스턴스를 생성할 수 있다.
인스턴스를 만드는 방법을 배워보고, 인스턴스가 생성이 될 시 어떤식으로 주소값과 데이터가 생성되는지 그림판에 그려주셨다.
스택영역에는 주소값이 들어가고 힙메모리에 데이터가 생성되어 주소값으로 힙메모리를 참조하는 것.
기억해야 할 새로운 용어가 참 많은 것 같다.
여러번 보면서 익혀야겠다.
그 다음강의에서는 실제로 문제를 보고 코딩해보는 강의였다.
간단한 문제이지만 이런 기본적인것들을 할 때 정확한 개념을 알고서 하는게 참 중요한 것 같다.
<추가공부>
객체지향 프로그래밍이란?
프로그램을 어떻게 설계해야 하는지에 대한 일종의 개념이자 방법론.
프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다. 객체를 데이터의 묶음으로만 착각하기 쉬운데, 그보다는 하나의 '역할'을 수행하는 메소드와 데이터의 묶음으로 봐야 한다.
객체지향은 여러 모델이 있다. 대부분 객체지향을 Java 위주로 소개하고 있고 class나 public 같은 용어가 사용되고 있지만 반드시 모든 언어가 class를 사용하는 것도 아니고 접근 제한자(public이나 private)를 사용하는 것도 아니다. 가장 대표적인 예로 JavaScript는 프로토타입 객체지향을 사용하고 있고 Python의 경우에는 접근제한자가 없다. 객체지향은 특정 언어가 아니라 개념이며 class는 객체이며 struct는 객체가 아닌 데이터의 집합이라는 설명 역시 틀렸고 특정 언어가 객체지향 언어라는 말도 완전히 틀린 표현이다.
알기쉽게.. 하니씩 보자.
클래스
- 객체를 만드는 틀 , 객체를 만들기위한 설계도
- 클래스를 만들때는 class 클래스명{ } 으로 만들 수 있습니다.
객체 (객체란 속성(상태)과 기능(동작)을 가진 덩어리)
- 객체는 속성과 기능의 집합이며, 속성과 기능을 객체의 멤버라고 한다.
- 속성(Property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)
- 기능(function) : 메서드(method), 행위(behavior), 함수(function)
인스턴스 (생성된 객체, 어떤 클래스에 속하는 각각의 객체)
- 객체를 생성하여 JVM(자바 가상 머신)이 관리하는 메모리에 적재된 것을 의미
- 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 합니다.
- 클래스로부터 객체를 만드는 과정을 인스턴스화 라고 한다.
- 특징 : 클래스가 가지고 있는 메소드(method)를 모두 상속 받는다.
객체와 인스턴스
- 객체는 인스턴스를 포함하는 일반적인 의미
- 인스턴스화 : 클래스로부터 인스턴스를 생성하는 것
- 클래스 -> 인스턴스화 -> 인스턴스(객체)
인스턴스 생성 및 사용
①
클래스명 변수명; //클래스의 객체를 참조하기 위한 참조변수 선언
변수명 = new 클래스명(); //클래스의 객체를 생성후 객체의 주소를 참조변수에 저장한다.
Ap c; //Ap클래스 타입의 참조변수 c 선언
c = new Ap(); //Ap클래스의 객체를 생성후 객체의 주소를 참조변수c에 저장한다.
인스턴스를 생성할려면 특정 클래스를 인스턴스화 시킨후, 그 인스턴스의 주소를 변수에 저장해야 한다.
변수는 만들려는 특정 클래스를 타입으로 해야합니다. 그래야 그 클래스를 참조할 수 있기때문입니다.
인스턴스의 주소를 참조변수에 저장하면 참조변수를 통해서 그 인스턴스를 사용할 수 있습니다.
클래스를 직접적으로 사용하는것이 아니라 클래스를 통해서 만들어진 인스턴스를 사용할 수 있는것임.
② 인스턴스를 생성할때 한번에 생성할 수도 있습니다.
Ap p = new Ap();
//Ap클래스 타입의 참조변수 p를 선언,
//new연산자로 Ap클래스의 객체생성후 객체의 주소를 참조변수 p에 저장
좀 더 쉽게 붕어빵에 비유하자면..
o 붕어빵 틀 = Class o 붕어빵 = 객체(Object)
o 붕어빵을 굽다 = 인스턴스(Instance)화 하다
o 만들어진 각각의 붕어빵 = Instance
그럼 붕어빵을 class에 대입하면~!
이런 모양이 됩니다.
이제 붕어빵을 구워볼게요~!
먼저 붕어빵 틀에 밀가루 반죽과 팥을 집어넣겠습니다.
색갈별로 붕어빵 먹고 싶어서, 붕어빵에 색갈별로 이름을 붙일게요~
각각의 붕어빵에 밀가루 반죽과 팥의 양을 각각 다르게 집어넣었습니다.
이제 ‘굽다()’라는 메서드를 호출해서 붕어빵을 굽겠습니다.
붕어빵이 구워지고 있습니다~
지금 구워지는 과정이 인스턴스(Instance)화 하고 있는 겁니다.
캬우~ 붕어빵이 다 구워졌습니다~^^ 드디어 객체들이 만들어 진거죠!!!
붕어빵들을 살펴보면 같은 틀에서 구워졌지만 모양들이 자신만의 개성을 가지고 있죠.
그 각각의 개성을 가진 녀석들을 즉, 실제 붕어빵들을 인스턴스(Instance)라고 부르는 겁니다.
이렇게 만들어지는 붕어빵을 자바코드로 옮기면~
자료 출처:
https://blog.naver.com/hhw1990/221360695920
http://victor8481.tistory.com/280
패스트캠퍼스 강의:
'언어공부 > JAVA&SPRING' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 10회차 미션 (0) | 2020.08.19 |
---|---|
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 9회차 미션 (0) | 2020.08.18 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 7회차 미션 (0) | 2020.08.16 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 6회차 미션 (0) | 2020.08.15 |
[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 5회차 미션 (0) | 2020.08.14 |
댓글