자바의 클래스(선언, 필드, 생성자)

김담희·2021년 9월 10일
0

JAVA

목록 보기
4/12

이제부터 클래스를 선언하는 방법에서부터 변수, 멤버에 대해서 알아보려고 합니다.

◈ 클래스 선언

| 클래스의 이름

클래스 이름은 다른 클래스와 식별할 목적으로 사용되므로 자바의 식별자 작성 규칙에 따라서 만들어야 한다.

1. 한글로 이루어진 이름도 가능하나, 영어 이름으로 작성하는 것을 권한다.

2. 알파벳 대소문자는 서로 다른 문자로 인식한다.

3. 첫 글자와 연결된 다른 단어의 첫 글자는 대문자로 작성한다. (예: Calculator. Car, CahtSever)


| 클래스 선언과 컴파일

1. 소스파일 생성: 클래스 이름.java(대소문자 주의)

2. 소스작성

3. 소스 파일당 하나의 클래스를 선언하는 것이 관례

  • 두 개 이상의 클래스도 선언 가능

  • 소스 파일 이름과 동일한 클래스만 public으로 선언 가능

  • 선언한 개수만큼 바이트 코드 파일이 생성


| new 연산자

1. 객체 생성 역할

  • new 클래스();

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

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

2. new 연산자는 객체를 생성 후, 객체 생성 번지 리턴


| 클래스 변수

1. new 연산자에 의해 리턴 된 객체의 번지 저장 (참조 타입 변수)

2. 힙 영역의 객체를 사용하기 위해 사용


| 클래스 변수의 용도

1. 라이브러리용(API: Application Program Interface)

  • 자체적으로 실행되지 않음

  • 다른 클래스에서 이용할 목적으로 만든 클래스

2. 실행용

  • main() 메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스


클래스의 구성 멤버

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

1) 필드의 내용: 객체의 고유 데이터 / 객체가 가져야 할 부품 / 객체의 현재 상태 데이터

2) 필드 선언: 필드 선언은 클래스 중괄호 {}블록 어디서든 존재할 수 있다.

3) 필드의 기본 초기값

4) 필드 사용

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

  • 필드 사용 위치:

  • 외부 클래스 불러오기 → 클래스 변수 명 = new 클래스();

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

1) 생성자의 내용: new 연산자에 의해 호출되어 객체의 초기화 담당

  • 필드의 값 설정

  • 메소드 호출해 객체를 사용할 수 있도록 준비하는 역할 수행

2) 필드의 내용: new 연산자에 의해 호출되어 객체의 초기화 담당

  • 모든 클래스는 생성자가 반드시 존재하며 하나 이상 가질 수 있다.
  • 생성자 선언을 생략하면 컴파일러는 기본 생성자를 추가한다.

3) 생성자 선언

  • 디폴트 생성자 대신 개발자가 직접 선언

  • 개발자 선언한 생성자 존재 시 컴파일러는 기본 생성자 추가하지 않는다
    (new 연산자로 객체 생성시 개발자가 선언한 생성자가 반드시 필요하다)

4) 필드 초기화

  • 초기값 없이 선언된 필드는 객체가 생성될 때 기본값으로 자동 설정

  • 다른 값으로 필드 초기화하는 방법
    (필드선언할 때, 생성자매개값으로, 매개 변수와 필드명 같은 경우, 매개 변수와 필드명 같은 경우 this사용)

    name, ban, memberCount 필드를 생성하고,
    생성자를 이용해서 초기값을 정해주었다.

    위 생성자를 호출하였고, 생성자가 가지고 있는 매개변수의 갯수에 맞게 name, ban, memberCount 매개변수의 값이 호출되어 결과를 출력했다.

5) 생성자 다양화해야 하는 이유

  • 객체 생성할 때 외부 값으로 객체를 초기화할 필요가 있다.

  • 외부 값이 어떤 타입으로 몇 개가 제공될 지 모른다 (생성자도 다양화)

6) 생성자 오버로딩(Overloading)

  • 매개변수의 타입, 개수, 순서가 다른 생성자 여러 개 선언

7) 다른 생성자 호출 [this()]

  • 생성자 오버로딩되면 생성자 간의 중복된 코드가 발생한다
  • 초기화 내용이 비슷한 생성자들에서 이러한 현상을 많이 볼 수 있다.
    • 초기화 내용을 한 생성자에 몰아 작성
    • 다른 생성자는 초기화 내용을 작성한 생성자를 this(...)로 호출한다.

this()는 자신의 다른 생성자를 호출하는 코드이다.

※ 반드시 생성자의 철줄에서만 허용된다.


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

위 클래스의 구성 멤버인 메서드(Method)에 대해서는 따로 다음 글에 정리해 보겠습니다.

0개의 댓글