열심히 끝까지

21강 클래스에 대하여 - 인스턴스 변수와 클래스 변수 본문

멘토씨리즈 JAVA

21강 클래스에 대하여 - 인스턴스 변수와 클래스 변수

노유림 2022. 4. 29. 18:35

<복습>
클래스란?      객체를 만들기 위한 설계도
객체란?         독립적으로 존재할 수 있는 것
인스턴스란?   클래스로 실제 메모리에 생성된 객체(객체가 더 포괄적인 의미)

클래스 생성 방법
       class 클래스명{
              변수 혹은 메서드
       }

객체(인스턴스) 생성 방법
       클래스명 참조변수 = new 클래스명();
           메모리를 달라는 의미 = new
           참조변수 객체처럼 사용 가능

객체 내 필드 접근 방법
       참조변수.필드명

21-1) 인스턴스 변수와 클래스 변수
       (1) 인스턴스 변수
                : 객체마다 갖는 고유한 변수
                
                - 인스턴스를 생성할 때 만들어지며,
                   각각의 인스턴스 마다 자신의 값을 갖고 있음
                - 각 인스턴스마다 다른 값을 가져야 할 때 생성 
                - 인스턴스 생성(new 클래스명();) 시 메모리에 생성

               ex) Hello 스포츠 센터 회원에 대한 정보를 관리할 클래스 생성

Member 클래스 작성(
SportsMain 클래스 작성 및 출력



                class 회원
              [ [ 이름 ] [ 나이 ] [ 성별 ] ]
                 -> [김민호][28][남자] / [이영희][24][여자] / [김철수][32][남자] ....
                 -> 이와 같이 회원들마다 고유한 값을 갖고 있기 때문에
                     클래스 안에 인스턴스 변수가 필요!

                < 인스턴스 생성 방법 >
                    class 클래스명{
                            자료형 변수명;       }

                  * 기존방식과 동일!

       (2) 클래스 변수
                : 모든 객체가 동일한 값을 갖는 변수
 
                - 모든 인스턴스가 같은 저장공간을 공유
                - 클래스가 처음 메모리에 로딩될 때 생성
                - 인스턴스 없이 사용 가능 ** 주요 특징 **

                ex) Hello 스포츠 센터 회원에 대한 정보를 관리할 클래스 생성

                    class 회원
                           [스포츠센터 명]
                        
                          -> 여기에 입력되는 사람들 모두 스포츠 센터명이 Hello다
                          -> 이 때, 회원들 마다 동일한 값을 갖고 있기 때문에 
                              클래스 변수가 필요!

                < 클래스 변수 생성 방법 >
                       class 클래스명{
                             static 자료형 변수명;          }

                       * 변수 선언 시 자료형 앞에 static 키워드 붙인다!

              < 실습 > SportsMain

static을 넣은 Member 클래스
static 넣은 후 SportsMain 클래스 및 출력
centerName을 member1만 바꿔도 모두 적용된다


                     <회원 틀 제작>
                    class Member
                    [centerName] | [name] [age] [gender]
                     클래스 변수  |      인스턴스 변수

                     ㄴ> 이것을 이용해 같은 모양의 인스턴스들을 생성

                   - 이 때, member1.centerName만을 다른 것으로 바꾸고 싶어도
                     static으로 인해 모든 멤버의 센터명이 바뀐다.

               < 실습 > 자동차 실습

Car 클래스