본문 바로가기

Java/Java 기초

클래스와 생성자

1. 클래스


(1) 클래스


   - 사용자 정의 타입이다(자료형)
   - 연관성 있는 저장공간과 기능을 한 곳에 모아 편하게 관리할 수 있는 것
   - 객체를 생성하기 위한 틀, 설계도면
      공통되는 속성(변수)과 행위(메소드)를 한 번만 선언해놓고 가져다 사용만 할도록 설계한다
      추상적인 것(클래스)을 구체화 시키면(메모리에 생성된 것) 객체라고 한다

클래스는 추상적이다
객체는 구체적이다
=> 하나의 추상적인 클래스를 만들면 여러개의 구체적인 객체를 만들 수 있다


(2) 객체(Object)와 인스턴스(Instance)


객체 : 실제 사물 또는 개념
클래스 : 객체를 컴퓨터에 옮기기 위해 추상화 한 것, 실제 존재하는 공간이 아니며 추상적이다
인스턴스 : 클래스를 메모리에 할당시킨 것이며 물리적으로 존재하는 공간, 구체적이다

   객체와 인스터는 동일하다고 생각하고 사용해도 문제가 없다
   한국에서는 클래스와의 관계를 말할 때 인스턴스라고 부른다


(3) 클래스 선언


   class 클래스명{

      //class를 구성하는 모든 변수, 메소드를 합쳐서 멤버라고 부른다
      변수;   //멤버 변수, 필드
      
      메소드(){} //멤버 메소드
   }


(4) 객체화작업(인스턴스화)   : instantiation


   객체를 만드는 작업, 추상적인 개념을 구체화 시키는 작업

   클래스명 객체명 = new 클래스명();
   클래스명 참조변수명 = new 생성자();

객체 사용방법
   변수명.필드명
   변수명.메소드명();

public void myMethod(){
   MyClass             refVar                  =       new MyClass();
   자료형(클래스명)   참조변수       대입연산자   new 생성자();
   --------------------------------         -------------------
      1번            3번          2번
}

1) refVar라는 참조변수는 myMethod()라는 메소드 영역에서 만들어진 지역변수이므로 JVM이 관리하는 메모리의
   Stack영역에 생성된다
   데이터타입(클래스)은 참조하려는 대상과 같은 자료형이어야하므로 MyClass라고 지정한다

2) new 연산자 Heap메모리 MyClass 객체를 생성하고 참조값을 가져온다(참조값 반환)
   이 때 생성자가 실행된다

3) 대입연산자를 통해 오른쪽에 참조값을 왼쪽의 참조변수에 저장한다

2.생성자


클래스 이름뒤에 소괄호가 있는 형태
메소드와 비슷하지만 메소드라고 부르지 않는다
생성자는 리턴이라는 기능이 존재하지 않는다

- 객체를 생성할 때 실행되는 코드가 작성되어있다
- 주로 해당 클래스의 필드를 초기화하는 목적으로 사용한다


(1) 기본생성자


public 클래스명(){}
매개변수가 없다
클래스 선언 시 자동으로 선언되며, 사용자가 직접 생성자를 선언하게 되면 자동으로 만들어주지 않는다


(2) this 


객체 자기 자신을 의미한다 -> 객체 자신의 주소값을 담고있다
this는 자동 생성되는 변수이다

'Java > Java 기초' 카테고리의 다른 글

상속 세부개념 및 접근 제한자  (0) 2023.12.19
this, static, 상속 개념  (0) 2023.12.18
오버로딩과 클래스  (0) 2023.12.14
배열과 메소드  (0) 2023.12.13
이중 for문과 배열  (0) 2023.12.12