목차
목표
자바의 Class에 대해 학습하세요.
학습할 것 (필수)
•
클래스 정의하는 방법
•
객체 만드는 방법 (new 키워드 이해하기)
•
메소드 정의하는 방법
•
생성자 정의하는 방법
•
this 키워드 이해하기
과제 (Optional)
•
int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요.
•
int value, Node left, right를 가지고 있어야 합니다.
•
BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요.
•
DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요.
클래스 정의하는 방법
클래스란?
객체를 정의해놓은 것으로 객체를 생성하는데 사용된다.
여기서 객체란 '실제 존재하는 것'으로 지금 이 포스팅을 작성하는 키보드부터 책상, 컴퓨터, 의자 등의 사물들이 객체라 할 수 있다. 프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 의미한다.
•
유형의 객체: 책상, 의자, 컴퓨터, 키보드, TV
•
무형의 객체: 수학공식, 프로그램 에러와 같은 논리 및 개념
객체와 클래스의 관계를 실행활에 비유를 하자면 제품 설계도와 제품의 관계로 볼 수 있다. TV 설계도는 TV를 정의한 것으로 TV를 보기위해서는 설계도가 아니라 TV가 필요한 것처럼 클래스도 객체를 만드는데만 사용된다. 그리고 객체는 클래스를 통해 생성한 다음에야 사용 가능하다.
이처럼 클래스를 선언해두면 그 이후 필요할 때마다 해당 클래스를 통해 객체를 생성해 사용할 수 있다. 클래스는 객체를 정의하기 위한 상태(멤버 변수)와 메서드(함수)로 구성된다.
클래스의 시각화
클래스를 시각화 해서 살펴보면 위와같이 외부에 노출되는 행위(Public API)와 외부에 노출되지 않는 내부 상세 구현부가 있습니다. 자전거를 클래스로 만든다고 할 때 각각의 자전거 회사는 자전거 객체에 대해 필요한 인스턴스 변수 즉, 기어, 현재 케이던스 등을 선언합니다. 그 다음 라이더가 기어 변경 및 브레이크를 밟고 페달링 케이던스를 변경할 수 있도록 하는 인스턴스 메서드에 대한 구현을 선언하고 제공합니다.
이제 각각의 인스턴스 변수와 인스턴스 메소드들을 입맛에 맞게 구현해서 사용할 수 있게 됩니다.
클래스를 정의하는 방법
작성 규칙
•
하나 이상의 문자로 이뤄져야 한다.
◦
Car, SportsCar
•
첫 번째 글자는 숫자가 올 수 없다.
◦
3Car
•
$, _ 외의 특수 문자는 사용할 수 없다.
◦
@Car, #Car
•
자바 키워드는 사용할 수 없다.
◦
int, for
클래스 정의 과정
1.
소스파일 생성
: 적절한 위치에 원하는 클래스이름.java 로 소스 파일을 생성해준다.
(이 때 클래스 이름은 작성 규칙을 지켜주도록 한다.)
2.
클래스에는 객체에 필요한 구성들을 선언해준다.
package me.catsbi.study.step5;
public class 클래스이름 {
private String 필드;
public 클래스이름() { } // 생성자
public void 메소드(){
...
}
}
Java
복사
•
•
생성자
: 객체 생성시 초기화를 진행하며 생성된 객체를 반환합니다. 하나의 설계도(클래스)를 통해 여러 객체를 만들 때 필요한 정보들을 인수로 받아서 객체를 생성해 사용할 수 있도록 합니다.
•
메소드
: 객체의 동작을 선언하는 블록으로 메소드를 호출하면 중괄호 내의 코드가 수행되며 적절항 행동을 취합니다.
예제:: 자동차 클래스 정의하기
package me.catsbi.study.step5;
public class Car {
private String manufacturer;
private String name;
private long price;
private int numberOfWheel;
public Car(String manufacturer, String name, long price, int numberOfWheel) {
this.manufacturer = manufacturer;
this.name = name;
this.price = price;
this.numberOfWheel = numberOfWheel;
}
public Car() { }
public void go(){
System.out.println("앞으로 전진합니다.");
}
public void stop(){
System.out.println("멈춥니다.");
}
}
Java
복사
자동차 클래스는 제조사,이름, 가격, 바퀴수라는 정보를 가지고 있으며, 전진과 정지 메소드를 가지고 있습니다.
객체 만드는 방법 (new 키워드 이해하기)
Car car = new Car();
설계도(클래스)를 작성했다면, 이제 이 설계도를 통해 객체를 생성할 수 있습니다.
Java의 new 키워드는 클래스의 인스턴스를 만드는데 사용됩니다. 즉, 새 객체에 대한 메모리를 할당하고 해당 메모리에 대한 참조를 반환하여 클래스를 인스턴스화 합니다.
new keyword 특징
•
객체를 만드는데 사용됩니다.
•
런타임에 메모리를 할당합니다.
•
모든 객체는 힙 영역에서 메모리를 차지합니다.
•
객체 생성자를 호출합니다.
•
생성자를 호출하려면 단일 후위 인수가 필요합니다.