본문 바로가기
java-liveStudy

5주차. 클래스

by 에드박 2020. 12. 16.

목표

자바의 Class에 대해 학습하세요.


학습할 것 (필수)

  • 클래스 정의하는 방법
  • 객체 만드는 방법 (new 키워드 이해하기)
  • 메소드 정의하는 방법
  • 생성자 정의하는 방법
  • this 키워드 이해하기

Class

클래스란 "객체를 정의해놓은 것" 또는 "객체의 설계도 또는 틀" 이라고 정의할 수 있습니다.

 

서로 연관된 메소드와 변수를 모아서 하나의 기능을 담당하도록 만든 박스를 클래스라고 할 수 있습니다.

 

이런 클래스를 중심으로 프로그램의 구조를 만들어 가는것이 "객체지향 프로그래밍" 이라고 합니다.

 


클래스 정의하는 방법

 

클래스는 접근제어자와 함께 class키워드를 사용해서 정의하면 됩니다.

 

[접근제어자] class [클래스이름] {

    변수와 메서드를 정의하는 부분

}

 

접근제어자는 객체지향 프로그래밍의 특징 중 하나로 정보 은닉을 위한 키워드 입니다.

예를들어 public 은 모든 접근을 허용하며 private는 해당 객체 내의 멤버변수나 메소드에서만 접근이 가능합니다.

 

클래스의 이름은 보통 대문자로 시작하는 파스칼 표기법(PascalCase) 를 사용합니다.

파스칼 표기법이란 단어의 첫글자를 대문자로 시작하고 이어지는 단어의 첫 글자도 대문자로 표기하는것을 말합니다.

ex) HelloWorld

 

클래스안에 다른 클래스를 정의하는 것도 가능합니다. 이렇게 하나의 클래스 파일에 여러 클래스를 정의했을 때

컴파일하면 각 클래스마다 .class 파일이 생성되는 것을 확인할 수 있었습니다.

 

클래스마다 .class 파일이 생성됨

 

클래스에 필드를 선언할 수 있는데 변수가 선언된 위치에 따라 클래스변수, 인스턴스변수, 지역변수 세 종류로 나눌 수 있습니다.

 

클래스 변수 : 클래스 영역에 선언되며 클래스가 메모리에 올라갈 때 생성됩니다.

인스턴스 변수 : 클래스 영역에 선언되며 클래스의 인스턴스가 생성되었을 때 함께 생성됩니다.

지역 변수 : 클래스 영역 이외의 영역에 선언된 것을 의미하며, 변수 선언문이 수행될 때 생성됩니다.


객체 만드는 방법

객체를 만들때는 new 라는 키워드를 사용합니다.

 

[타입] 변수명 = new 생성자;

new 키워드는 메모리상에 공간을 할당하고, 할당받은 공간의 주소값을 반환합니다.

 

자바에서 프리미티브 타입(Primitive Type)을 제외한 타입 즉, 레퍼런스 타입(Reference Type)의 변수를 초기화 시키면  객체를 Heap 영역에 저장하고 레퍼런스 타입의 변수에는 new 키워드가 주소값을 가지고 Stack 영역에 저장됩니다.

 


메소드 정의하는 방법

메소드는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것입니다. 

메소드는 아래와 같이 정의할 수 있습니다.

[접근제어자] [반환타입] 메소드이름(매개 변수) {
    수행할 문장
}

 

반환타입을 지정하지 않으려면 void 키워드를 사용할 수 있습니다.

 

static 키워드를 사용하면 클래스 메소드를 선언할 수 있는데 클래스 메소드는 클래스가 메모리에 올라갈 때 함께 생성 되므로 객체 생성 없이 바로 사용할 수 있습니다.

 

일반적인 메소드의 선언과 사용법, 객체를 생성하여 멤버 참조 연산자 . 을 사용해서 메소드를 호출할 수 있습니다.

 

 

static을 사용한 클래스 메소드의 선언과 사용법, 클래스 이름과 함께 바로 멤버 참조 연산자를 사용해 호출할 수 있습니다.

 

 


생성자 정의하는 방법

생성자란 클래스 객체를 생성함과 동시에 인스턴스 변수를 초기화 할 수 있는 메서드를 의미합니다.

 

반환값이 없지만 void는 사용하지 않습니다.

 

생성자의 이름은 클래스의 이름과 똑같이하여 사용하면 됩니다.

즉, Calculator 라는 클래스의 생성자는 Calculator 라는 이름을 가집니다.

 

[접근제어자] 생성자이름 (매개변수) {
    생성자에서 수행할 문장들
}

 

생성자의 매개변수를 다른 타입 또는 개수를 변경하여 여러가지 생성자를 변경할 수 있는데

이것은 생성자도 하나의 메소드라는 것입니다.

 

Calculator(int a)
Calculator(int a, int b)
Calculator(int a, int b, int c)
Calculator(String name)
...
...

 

 클래스는 따로 생성자를 선언하지 않아도 기본 생성자를 기본으로 가지고 있습니다.

Calculator() { }

this 키워드 이해하기

자바에서 this 키워드는 객체 자기 자신을 의미합니다.

 

따라서 this 키워드를 이용해서 자기자신의 변수나 메서드에 접근할 수 있습니다.

 

만약 클래스의 필드에 name 이라는 변수가 있고 매개변수로 받아온 name 이 있을 때 그냥 name을 사용하면 매개변수로 받아온 name을 우선해서 사용합니다.

 

따라서 필드의 name 변수를 사용하고 싶다면 this.name 처럼 사용하면 됩니다.

 

다음과 같이 생성자를 선언할 때 유용하게 사용할 수 있습니다.

Class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

'java-liveStudy' 카테고리의 다른 글

6주차 과제. 상속  (0) 2020.12.25
5주차. 과제  (0) 2020.12.17
4주차 과제. 제어문 + 과제  (0) 2020.12.04
3주차 과제. 연산자  (0) 2020.11.26
2주차 과제. 자바의 프리미티브 타입, 변수 그리고 배열  (0) 2020.11.21

댓글