본문 바로가기
👩‍💻TIL/JAVA

[자바(JAVA) 개념] 클래스(class) 선언방법 / 필드 / 생성자

by devuna 2019. 12. 1.
728x90

클래스를 프로그래밍적 언어로 표현하자면 어떠한 객체의 변수(valiable) , 메소드(method) 의 집합이다’라고 표현할 수 있으며, 현실세계에 빗대어 말하자면 동일한 속성과 행위를 수행하는 객체의 집합이라고 할 수 있다.

 

그렇다면 클래스는 어떻게 선언하는가?

 

1. 클래스 작성 규칙

  • 하나 이상의 문자로 이루어져야 한다..
  • 첫 번째 글자에는 숫자가 올 수 없다.
  • $,_ 외에는 특수문자 사용불가 ($port (o), c@r(x))
  • 자바 명령어, 키워드는 사용할 수 없다.(while, for, int 등 사용불가)
  • 이름은 대소문자를 구분한다.(보통, 첫번째 글자는 대문자로 작성)

 

2. 선언방법

클래스 변수의 선언은 다음과 같다.

 

클래스명  선언할 변수명;
변수명
= new 클래스();

Product p;

p = new Product();

 묶어서 한 개의 실행문으로 작성도 가능하다

 

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

Product p = new Product();

 

위의 실행문이 실행되면, 메모리에 클래스 변수와 객체가 생성된다.

3. 클래스의 구성 멤버

 

클래스의 구성 멤버에는 필드(field), 생성자(constructor), 메소드(method) 가 있다. 이 구성 멤버들은 생략되거나 여러 개 작성될 수 있다.

 

필드= 객체의 데이터가 저장되는 곳!

필드는 객체 고유의 데이터, 상태 정보를 저장하는 곳이다.

선언 형태는 변수 선언과 비슷하지만, 변수는 생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸된다. 하지만 필드는 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다. 클래스 선언 바로 밑에서 선언되며, 생성자와 메소드 보다 위에서 선언된다.

 

                                        <필드의 타입 종류>

분류

데이터 타입

초기값

정수 타입

byte

0

char

\u0000(빈 공백)

short

0

int

0

long

oL

실수 타입

float

0.0F

double

0.0

논리 타입

boolean

false

참조 타입

배열

클래스(String 포함)

인터페이스

null

 

생성자

생성자는 객체 생성 시 초기화를 담당한다. 필드를 초기화하거나, 메소드를 호출하여 객체를 사용할 준비를 한다. 생성자는 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어있고 리턴 타입이 없다. (클래스의 이름과 생성자의 이름은 동일하다는 점 기억할 것!)

생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다. new연산자에 의해 생성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고 객체의 주소가 리턴된다. 리턴된 객체의 주소는 클래스 타입 변수에 저장되어 객체에 접근할 때 이용된다.

 

오버 로딩(overloading)

매개변수의 타입, 개수, 순서를 달리 한 생성자를 여러 개 선언하는 것이다.

 

public class Product{

Product(){ }                        //기본생성자  
Product(String name, int price){ ... } //매개변수 String , int 받는 생성자
Product(String name, String color, int price, ){ ... }//매개변수 String , String ,int 받는 생성자
} 

 

 

다른 생성자 호출하기 (this())

생성자 오버 로딩이 많아질 경우 생성자 간 중복된 코드 발생한다.

이때, 기존에 있는 생성자를 호출하여 기존 내용을 가져오는 방법을 사용할 수 있다.

this()는 자기 클래스의 다른 생성자를 호출하는 코드로, 생성자 내에서 반드시 첫 줄에 사용하여야 한다.

 

메소드

 

메소드는 객체의 동작을 수행하는 블록을 뜻한다. 메소드를 호출하게 되면 중괄호 블록에 있는 모든 코드들이 일괄적으로 실행된다. 메소드는 필드를 읽고 수정하는 역할도 하지만, 다른 객체를 생성하여 다양한 기능을 수행하기도 한다. 또한, 객체 간의 데이터 전달의 수단으로도 사용된다. 외부로부터 매개 값을 전달받을 수도 있고, 실행한 값을 리턴할 수도 있다.

 

 

 

728x90

댓글