반응형

목표

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

 

학습할 것

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

클래스 정의하는 방법

JAVA 클래스(class)를 찾으면 '자바에서 클래스(class)란 객체를 정의하는 틀 또는 설계도와 같은 의미로 사용됩니다.'

라는 설명을 많이 볼 수 있을 것이다.

내가 읽은 자바 책에서 클래스에 대한 설명도 틀에 비교하여 설명되어 있었다.

나는 이 이라는 단어가 클래스를 잘 설명해준다고 생각한다.

 

클래스객체의 상태를 나타내는 필드와 객체의 행동을 나타내는 메서드로 구성된다.

필드는 클래스에 포함된 변수를 의미하고 메서드는 특정 작업을 수행하기 위한 명령문의 집합이라고 할 수 있다.

 

사람을 클래스로 표현한다고 예를 들어보자

여기서 사람은 객체가 되고, 사람의 상태를 나타내는 필드는 이름, 나이, 키, 몸무게 등이 있을 수 있을 것이고, 행동으로는 '밥을 먹다'가 메서드가 될 것이다. 

 

 

1. class 정의

위의 예시를 이용해서 클래스를 정의해 보았다.

Person이라는 클래스를 정의함으로써 많은 사람들을 만들 수 있는 틀이 준비된 것이다.

 

객체 만드는 방법

우리는 클래스를 이용해서 사람을 만들 수 있는 틀을 만든 것뿐이지 실제 사람을 만든 것은 아니다.

이제 틀을 이용해서 여러 사람을 만들어 보겠다. 

 

2. 객체 생성

실제 사람들을 만들 때는 new라는 키워드를 이용해서 만든다. 

위의 예시는 new라는 키워드를 이용해서 길동과 영수를 만들어보았다.

이제 우리는 길동과 영수를 만들었으니 행동을 시켜보겠다.

 

메서드 정의하는 방법

메서드를 정의하는 방법은 1.class 정의 캡처 이미지에서 public void eat() {} 이 부분이 메서드를 정의 한 곳이다.

public은 접근제어 지시자라는 키워드인데, 아래에서 조금 더 자세히 설명드리도록 하겠다. 지금은 넘어가자

그다음 void 위치에는 반환 타입이 들어가는데, void는 반환 타입이 없다는 뜻을 의미한다.

내가 숫자를 반환하고 싶다면 int, 문자를 반환하고 싶다면 String 등을 작성하면 된다. 

마지막으로 eat는 메서드명을 의미한다. (메서드명은 그 행동을 명확하게 알 수 있게 네이밍 해주는 것이 좋다.)

이제 메서드를 이용해서 행동을 만들어 보았다면 길동이와 영수가 행동할 수 있도록 사용해보도록 하겠다.

 

3.  메서드 사용

new라는 키워드를 사용해서 생성한 gildong, youngsu를 인스턴스라고 부르는데 생성된 인스턴스 점(.) 메서드명을 작성해서 행동을 시킬 수 있다. 

 

그 결과 위와 같다. 그런데 위의 결과를 보고서는 누가 밥을 먹었는지 알 수가 없다. 그래서 누가 밥을 먹었는지 추가해보도록 하겠다.

 

생성자 정의하는 방법, this 키워드 이해하기

생성자객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화해주기 위해 맨 처음 실행되는 메서드이다. 

지금 우리는 생산자라는 것을 작성한 적이 없지만 사용되었다.

무슨 의미이냐면 만약 클래스에 생성자가 하나도 없다면 컴파일러는 컴파일 단계에서 자동으로 디폴트 생성자를 추가해서 사용하게 된다. 만약 하나라도 생성자가 구현되어 있다면 생성하지 않는다.

 

 

디폴트 생성자 확인

위 캡처를 보시면 target 디렉터리 아래에 Person 클래스에 public Person() {} 메서드가 있는 것을 확인할 수 있다.

이게 바로 디폴트 생성자다. 나는 선언한 적이 없지만 컴파일러가 자동으로 내가 아무런 생성자를 작성하지 않았기 때문에 만든 것이다. 

그럼 이제 우리는 생성자를 이용해서 객체에 초기화할 때 이름을 강제화해서 누가 밥을 먹었는지 확인해보도록 하겠다.

 

Person 객체에 생성자 생성

생성자의 규칙은

1. 클래스명과 메서드명이 동일해야 한다.

2. 리턴 타입을 정의하지 않는다.

 

위에 this라는 키워드가 보일 것이다. this와 생성자는 떨어질 수 없는 둘도 없는 친구이다.

this는 참조 변수로 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수이다.

이러한 this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다.

 

 

이제 생성자를 이용해서 name을 넣을 것을 강제화했기 때문에 에러 메시지가 출력되는 것을 확인할 수 있다.

 

4. 생성자를 이용한 이름 초기화 설정

 

캡처4 결과 값

객체를 생성할 때 이름을 넣도록 강제화하였고, 이제 실행하면 위와 같이 누가 밥을 먹었는지 알 수 있게 되었다.

 

  클래스내부 동일패키지 상속받은클래스 이외의 영역
private o x x x
default o o x x
protected o o o x
public o o o o

접근제어 지시자 표이다. 표와 같이 접근제어 지시자를 이용해서 해당 클래스나 메서드들을 접근할 수 있는 범위를 제한할 수 있다.

 

 


 

 

 

참조

wikidocs.net/281

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

www.tcpschool.com/java/java_methodConstructor_this

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

728x90
반응형

+ Recent posts