차근차근 개발자 되기

Java

7일차: Java 클래스(필드, 생성자, 메소드)- 2021.06.23

wellow 2021. 6. 23. 23:58

목차

1.     클래스

2.     필드

3.     생성자

4.     메소드

 

Intro

• 변수(Variable): 메모리상에 데이터를 저장하는 기억공간   

• 변수 만드는 형식:  자료형  변수명 = 데이터;    (ex.   Int num = 10;)

 

지역변수(Local variable): 스택(stack) 영역에 저장

  1. 메소드 안에서 정의되는 변수          

  2. 매개 변수(parameter): 메소드 괄호안에서 사용되는 변수

  3. 블럭문(조건문, 반복문) 안에서 사용되는 변수

 

  해당 메소드가 호출될때 스택 메모리에 할당되고, 메소드 실행이 종료되면 자동으로 메모리가 해제된다.    

 

멤버변수(전역 변수, field)

- heap 메모리 영역에 저장

- 메소드 바깥쪽에 정의되는 변수(ex. Animal.java에서 public class Animal int age;)

1. 멤버변수는 heap메모리 영역에 저장됨.

2. 클래스(생성자, 메소드) 안에서 모두 사용이 가능함 

3. 참조형(클래스, 배열, 인터페이스)을 이용해서 new연산자로 객체를 생성할 때 heap 메모리 영역에 새로운 공간을 할당 받는다.

 

 → 메모리 해제 시점: 더 이상 참조할 주소값이 없을 때 garbage collection

 

1. 클래스(Class)

          

1) 객체 생성

- new 클래스();

- 클래스()는 생성자를 호출하는 코드

- 생성된 객체는 힙 메모리 영역에 생성

 

2) 클래스 생성

클래스 변수 = new 클래스();

3) 클래스의 구성 멤버

- 필드(Field): 객체의 데이터가 저장되는 곳

- 생성자(Constructor): 객체 생성시 초기화 역할 담당

- 메소드(Method): 객체의 동작에 해당하는 실행 블록

 

2. 필드(Field)

 

1) 필드 선언

타입  필드  =  초기값;

 

2) 필드의 기본 초기값               ★FieldEx 참고

- 객체 생성시 자동으로 기본값으로 초기화

- 같은 기본형 자료라고 하더라도, 지역변수면 변수의 초기값이 자동으로 설정되지 않지만,

멤버변수는 초기값이 자동으로 설정됨(ex. Int형은 0, double형은 0.0)

 

3) 필드 사용

- 필드 값을 읽고, 변경하는 작업을 말한다.

- 필드 사용 위치:

                      객체 내부: "필드 이름" 으로 바로 접근

                      객체 외부: "변수.필드이름"으로 접근

 

3. 생성자(Constructor)

 

1) 생성자

- New 연산자에 의해 호출되어 객체의 초기화 담당

- 생성자는 클래스명과 동일한 이름으로 생성해야 한다.

- 기본 생성자(default constructor): 매개변수가 없는 생성자

- 매개변수가 있는 생성자: 괄호 안에 매개변수를 가지는 생성자

* 생성자에서 접근제어자는 public 또는 default 접근제어자 사용

 

2) 생성자의 역할

- 객체가 생성될 때 heap영역에 멤버변수들이 저장될 수 있는 공간을 할당하고 초기화하는 역할을 담당한다.

 

3) 생성자 호출

- 생성자는 객체가 생성될 때 호출된다.

       ex) Animal   an  =  new  Animal();

                                       생성자 호출

- 기본 생성자는 객체가 생성될 때 컴파일러가 자동으로 생성해준다.

다른 생성자 호출: this()를 이용해 같은 클래스 안에 있는 생성자를 호출할 수 있다.

 

4) 생성자 오버로딩(overloading)

- 한 개의 클래스 안에  동일한 이름의 생성자를 여러 개 생성하는 것

- 올바른 오버로딩 방법: [ 매개변수의 자료형, 매개변수의 개수, 매개변수의 순서]를 다르게 하기

 

4. 메소드(Method)

 

1) 리턴값이 있는 메소드

- return: 메소드를 호출한 곳에 값을 돌려주는 역할

- 반드시 리턴(return)문 사용해 리턴(return)값 지정해야 함

- return 문 뒤에 실행문 올 수 없음(return문은 메소드 가장 마지막 줄에 사용해야 한다.)

   

2) 메소드 호출

- 클래스 내부: 메소드 이름으로 호출

- 클래스 외부: 객체 생성 후, 참조 변수를 이용해 호출