본문 바로가기
[ JAVA ]/JAVA

[ Java ] 클래스와 객체2

by 환이s 2022. 11. 30.
CHAPTER 08. 클래스와 객체 알아가기

 

6 ) Class & Instance

 

 

 

6-1 ) 클래스 생성하기

  • 클래스를 사용하기 위해서는 클래스를 생성해야 함
  • new 예약어를 이용하여 클래스 생성
  • 클래스형 변수 이름 : new 생성자;  >>> Ex) Student studentA = new student();

 

 

7 ) 인스턴스와 힙(heap) 메모리

  • 하나의 클래스 코드로부터 여러 개의 인스턴스를 생성
  • 인스턴스는 힙(heap) 메모리에 생성됨
  • 각각의 인스턴스는 다른 메모리에 다른 값을 가짐

 

8 ) 용어 정리

  • 객체 : 객체 지향 프로그램의 대상, 생성된 인스턴스
  • class : 객체를 프로그래밍하기 위해 코드를 만든 상태
  • Instance : class가 메모리에 생성된 상태
  • Member variable : class의 속성, 특성
  • Method : member variable을 이용하여 class의 기능을 구현
  • 참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수
  • 참조 값 : 생성된 Instance의 메모리 주소 값

 

9 ) 생성자(Constructor)

 

인스턴스 생성 시 new 키워드와 함께 사용했던 생성자

 

9-1 ) Constructor 기본 문법

 

  • 생성자는 Instance를 초기화할 때의 명령어 집합
  • 생성자의 이름은 그 class의 이름과 같음
  • 생성자는 Method가 아님, 상속되지 않으며, retorn 값은 없음.

 

10 ) 디볼트 생성자 ( Default Constructor )

  • 하나의 class에는 반드시 적어도 하나 이상의 constructor가 존재
  • 프로그래머가 constructor를 기술하지 않으면 default constructor가 자동으로 생김( 컴파일러가 코드에 넣어줌 )
  • Default Constructor는 매개 변수가 없음
  • Default Constructor는 구현부가 없음

 tip.  만약 class에 매개변수가 있는 생성자를 추가하면 Default Constructor는 제공되지 않음.

 

11 ) 생성자 오버로드 ( Constructor Overload )

  • 필요에 의해 Constructor 추가하는 경우 여러 개의 Constructor가 하나의 class에 있음( Overload )

 

 

 

12 ) 참조 자료형 ( Reference daty type )

  • 변수의 자료형
  1. 기본 자료형 : int, long , float , double 등
  2. 참조 자료형 : String, Date, Student 등 ( class 형 )

 

13 ) 정보 은닉 ( Information hiding )

 

  • private 접근 제어자

- 클래스의 외부에서 클래스 내부의 멤버 변수나 메서드에 접근(access) 하지 못하게 하는 경우 사용.

- 멤버 변수나 메서드를 외부에서 사용하지 못하도록 하여 오류를 줄일 수 있음

- 변수에 대해서는 필요한 경우 get(), set() 메서드를 제공

 

 

14 ) Static 변수

 

Static 변수는 Instance가 생성될 때마다 다른 메모리를 가지는 것이 아니라 프로그램이 메모리에 적재(load)될 때 데이터 영역의 메모리에 생성된다. 따라서 Instance 생성과 관계없이 클래스 이름으로 직접 참조하고, Class 변수라고도 함.

 

[ static 예약어 ] [ 자료형 ] [ 변수 이름 ]

            |                   |                  |

        static             int         serialNum    >> static int serialNum;

 

 

14 -1 ) Static 변수 예시

 

여러 Instance가 하나의 메모리 값을 공유할 때 필요

학생이 생성될 때마다 학번이 증가해야 하는 경우

기준이 되는 값은 Static 변수로 생성하여 유지함.

 

각 학생이 생성될 때마다 Static 변수 값을 복사해 와서 하나 증가시킨 값을 생성된 Instance의 학번 변수에 저장해 줌

 

static 변수 예시

 

14-2 ) Static 메서드

 

-클래스 메서드라고도 한다.

-메서드에 Static 키워드를 사용하여 구현하고, 주로 Static 변수를 위한 기능을 제공한다.

-Static 메서드에서 Instance 변수를 사용할 수 없음

-Static 메서드도 Instance의 생성과 관계없이 클래스 이름으로 직접 메서드 호출.

                                        Ex ) Student.getSerialNum(); // getSerialNum()이 Static Method.

-Instance의 변수의 경우 꼭 Instance가 먼저 생성되어야 하므로 Static Method에서는 생성이 불확실한 Instance 변수를 사용할 수 없음.

 

15 ) 변수의 유효 범위

 

변수 유형 선언 위치 사용 범위 메모리 생성과 소멸
지역변수
(로컬 변수)
함수 내부에 선언 함수 내부에서만 사용 스택 함수가 호출될 때 생성되고 함수가 끝나면 소멸함
멤버 변수
(Instance 변수)
Class member 변수로 선언 Class내부에서 사용하고 private이 아니면 참조 변수로 다른 Class에서 사용 가능 Instance가 생설될 때 힙에 생성되고, 가비지 컬렉터가 메모리를 수거할 때 소멸됨
Static 변수
(Class 변수)
Static 예약어를 사용하여 Class내부에 선언 Class 내부에서 사용하고 private이 아니면 Class 이름으로 다른 Class에서 사용가능 데이터 영역 프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸됨

 


마치며

 

클래스와 객체 포스팅을 마무리했습니다. 꼭 알아가야 하는 파트라서 나눠서 포스팅을 해보았습니다. 다음 포스팅 배열에서 뵙겠습니다.

 

728x90

'[ JAVA ] > JAVA' 카테고리의 다른 글

[ Java ] 배열 ( ArrayList )  (0) 2022.12.13
[ Java ] 배열  (0) 2022.12.04
[ Java ] 클래스와 객체1  (0) 2022.11.25
[ Java ] Method  (0) 2022.11.23
[ Java ] 반복문  (2) 2022.11.22