Programming Language/java

[whiteship_java_study]5주차. 클래스(Class)

김크리 2021. 7. 22. 20:37

목표

클래스 정의하는 방법

객체 지향 프로그래밍(OOP, Object Oriented Programming)이란 모든 데이터를 객체(Object)로 취급하며 객체 중심으로 프로그래밍을 하는 것을 말한다. 이때, 객체를 만들기 위한 설계도의 개념을 클래스 라고 한다.
클래스는 필드(field), 메소드(method)로 구성된다.

접근제어자 class 클래스명{ 필드 선언( 클래스 내 지역 변수) 메소드 선언 }

자바에서 클래스를 사용하기 위해서는 해당 클래스 타입의 객체(object)를 선언해야한다.
이때, 클래스로부터 객체를 선언하는 과정을 클래스의 인스턴스 화라고 한다.
클래스의 모양대로 객체를 생성하여 메모리에 할당하는 것을 말하고, 이때부터 객체가 메모리에 할당되어있다.

객체 만드는 방법 (new 키워드 이해하기)

클래스를 가지고 만들어진 객체를 인스턴스라고한다. new 키워드를 사용하여 인스턴스를 생성하고 해당 인스턴스의 주소를 미리 선언한 참조 변수에 저장할 수 있다.
즉, 선언한 클래스를 가지고 객체를 만드는 키워드 이다.

객체 참조 변수 이름 = new 클래스 이름(); //선언된 클래스 public class Shop { //초기값, 아무런 파라미터를 받지 않는 초기화값은 기본이다. public Shop(){ } } //객체 생성 Shop shop = new Shop(); //객체 생성후에 메모리에 Shop 클래스 만큼의 공간이 할당된다.(인스턴스 생성)

메소드 정의하는 방법

메소드(method)

자바에서 클래스의 멤버로 기능을 표현하는 역할을 한다. 어떠한 특정 작업을 수행하기 위한 명령문의 집합이다.
메소드는 중복적인 코드의 반복적 프로그래밍 회피, 모듈화를 통해 코드의 가독성 향상, 유지보수 향상이 목적입니다.

접근제어자 반환타입 메소드이름(매개변수 목록){ //내용 구현 } public void print(String str){ System.out.println(str); }

메소드는 클래스 객체 안에 있으며, 선언된 클래스 객체를 통해 호출할 수 있습니다.
멤버 참조 연산자(.)를 통해 호출할 수 있습니다.

//예제 클래스 선언 class Car { //예제 메소드 선언 public void print(String str); } //객체 생성 Car car = new Car(); //메소드 호출 car.print("자동차");

생성자 정의하는 방법

생성자(constructor)

자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 갑승로 초기화할 수 있는 생성자 라는 메소드를 제공한다.
자바에서 생성자는 해당 클래스의 이름과 동일하다.

public class Car { //클래스 이름과 동일한 메소드 = 생성자 Car(){ //실행 } }

생성자의 선언은 특별하다.

  1. 생성자는 반환값이 없이지만, void 타입으로 선언하지 않는다.(타입 선언이 없다.)
  2. 생성자는 초기화를 위한 데이터 인수로 전달받을 수 있다.
  3. 객체를 초기화하는 방법이 여러개 존재할 경우, 하나의 클래스가 여러개의 생성자를 가질 수 있다.
  4. 생성자도 메소드 이므로, 메소드 오버로딩이 가능하다.
  5. 생성자를 선언하지 않아도 기본으로 빈 매개변수를 가진 생성자가 선언되어있다.
  6. 자바에서 생성자는 new 키워드를 사용하여 객체를 생성할때 자동으로 호출한다. 객체가 생성됨과 동시에 생성자가 호출되는 것이다.
public class Car { Car(){} //기본생성자, 생성자가 선언되어있지 않으면 기본으로 있다. Car(String str){} Car(String str, int num){} Car(String str, int num, boolean isEmpty{} //... }

this 키워드 이해하기

this 참조변수

this 참조변수는 인스턴스가 자기 자신을 참조할때 사용하는 변수이다. this 참조 변수는 해당 인스턴스의 주소를 가리킨다.

public class Car{ private int price; private String model; private boolean soldOut; Car(String model, boolean soldOut, int price){ //매개변수와 인스턴스 변수의 이름이 같을 경우, 인스턴스 변수 앞에 this 키워드를 붙여 구분한다. this.model = model; this.soldOut = soldOut; this.price = price; } }

과제

이진트리 및 이진트리 탐색
과제 URL : https://github.com/cri-kim/BlogPractice/tree/main/java/live-study/src/week/five

참고

백기선의 자바 스터디 : https://github.com/whiteship/live-study
http://tcpschool.com/java/java_class_intro