본문 바로가기
코딩Language(전공)

[자바] 클래스와 객체 _ 설계도로 클론을 만들어보자

by Nerdogger 2019. 8. 12.

코드가 보기에 어렵지 않으니 한번 슥 보고 밑으로 내려오세요.

// 문제 : 이창훈 클론의 설계도를 만들어주세요.

class Main {
  public static void main(String[] args) {
    이창훈 first_클론 = new 이창훈();
    first_클론.공부한다();
    first_클론.운동한다();
    first_클론.술먹는다();
  }
}

class 이창훈 {
  void 공부한다() {
    System.out.println("|지능| +1");
  }
  void 운동한다() {
    System.out.println("|근력| +1");
    System.out.println("|뱃살| -1");
  }
  void 술먹는다() {
    System.out.println("|뱃살| +1");
    System.out.println("|지능| +1");
  }
  
}

자바는 객체지향프로그래밍 언어이다.

클래스, 객체, 메소드, 인스턴스, 레퍼런스등 정말 생소한 여러단어가 서로 설명하고 연결되어 있으니 머리가 아프다.

 

나의 클론을 만들고 조종하는 프로그램을 보면서 쉽게 한번 이해해보자.

 

자 위 코드를 보면, 

메인클래스 안에 메인메소드가 있고,

밑에 이창훈 클래스 안에 공부한다,운동한다,술먹는다 메소드가 있다.

 

이창훈 클래스로 각 용어를 설명해보자.

(참고로 이창훈은 내 이름이다....ㅎ)

클래스는 설계도이다. 우리는 이 설계도를 이용하여 클론을 찍어낸다.

그리고 그 설계도에는 각 기능, 변수 등이 있다.

그 기능 공부한다(), 운동한다() 등을 메소드라고 한다. C언어에서는 함수라고 한다.

 

우리는 설계도만 가지고는 이 메소드들을 실행시킬수 없다.

자동차 설계도만 가지고 드라이브를 할 수는 없는 것 아닌가?

 

그래서 우리는 위에서 말했듯 클론설계도(클래스)를 이용하여 클론을 만든다.

이것이 바로 객체이다.

아래 코드의 메인메소드를 보면 이창훈클래스를 이용하여 객체를 만들었다.

 ex) new 이창훈();

그리고 그 객체를 힙영역에 할당해주기 위하여 

객체 레퍼런스를 저장할 변수를 선언하고, new연산자를 이용하여 레퍼런스를 그 변수에 저장한다.

레퍼런스란 그 객체에 대한 주소 or 식별자이다.

 

즉, 아래 코드에서 변수 'first_클론'은 생성된 객체(인스턴스)를 참조한다. 라고 할 수 있다.

다르게 말하면 변수가 인스턴스를 가지고 있는 것이 아니라, 인스턴스를 참조한다.

또 다르게 말하면 변수가 객체(인스턴스)의 주소(레퍼런스)를 참조한다. 

라고 할 수 있다.

그리고 힙영역에 할당된 객체 인스턴스라고 한다.

 ex) 이창훈 first_클론 = new 이창훈();

 

위 밑줄친 모든 문장을 완벽하게 이해했다면 클래스, 객체, 인스턴스, 래퍼런스 용어정리 끝!

 

이제 객체를 생성, 즉 나의 클론을 만들었으니 공부하고, 운동하고, 술마시게 할수 있다.

ex) first_클론.공부한다();
    first_클론.운동한다();
    first_클론.술먹는다();

하나의 설계도로 여러가지 다른 객체를 만들 수 있다.

예를 들면 지능과 뱃살과 근력이 모두 다른 객체말이다. ㅎㅎ

 

끝!!

후 당떨어진다

 

- 참고 : [youtube - 희성] 장희성강사님의 설명을 참고하여 썻습니다.