플레이데이터 - 5일차 자바 공부

Kim Hyen Su·2023년 7월 5일

🎇클래스

객체지향프로그래밍

객체 간의 상호작용을 통해 프로그램을 짜는 것.

객체 간의 상호작용 : 객체 간에 메서드 호출을 통해 입력값을 넣고, 반환값을 받도록 하는 것.

객체와 클래스

  • 객체 : 속성을 가지며, 식별이 가능한 것.
    - 객체는 속성과 동작으로 구성되어 있다.
    - 자바에서 객체는 속성을 필드(field), 동작을 메서드(method)라고 한다.

  • 객체 간의 관계
    - 사용 관계 : 사람 - 자동차
    - 집합 관계 : 자동차 - 엔진, 바퀴, 차체
    - 상속 관계 : 기계 > 자동차

  • 클래스 : 객체의 설계도
    - 하나의 소스 파일 당 하나의 public 클래스를 선언하며 두이름은 동일하다.

  • 객체 생성과 클래스 변수
    - new 연산자 사용하여 객체를 생성.
    - 클래스타입 객체명 = new 클래스타입();

  • 클래스의 선언
    public class 클래스명 { }

  • 클래스의 구성 멤버
    필드, 생성자, 메서드

🎇필드

필드

  • 객체의 현재 상태.
  • 지역변수와 구분하기 위해 '멤버 변수'라고도 한다.

필드 선언

타입 필드명 [= 초기값];

  • 초기값이 지정되지 않은 필드는 초기값이 선언과 동시에 자동 생성된다.

🎇생성자

생성자

  • 객체의 필드 초기화

기본 생성자

  • 별도로 클래스에 생성자를 정의하지 않은 경우 컴파일러가 자동으로 기본 생성자를 생성해준다. 이는 객체 생성 시 생성자가 필수적으로 필요하기 때문이다.
  • 그러나, 클래스에 개발자가 직접 정의한 생성자가 1개라도 존재하는 경우 컴퍼일러는 기본 생성자를 추가하지 않는다.

this

  • 메서드 안에 내부적으로 정의된 지역 변수로, 객체 자신의 참조값을 저장하고 있다.
  • this.필드명 : 객체 자신의 멤버변수 값을 의미한다.

생성자 오버로딩

  • 클래스 안에 매개변수가 다른 여러개의 생성자를 정의하기 위한 기능.
  • 생성자 간에 오버로딩을 위해서는 매개변수 타입, 순서, 갯수가 달라야 한다.
  • 대신에 순서의 경우 두 매개변수 타입이 달라야 한다.
  • 즉, 생성자 메서드 호출 시, 입력된 매개변수 타입이 오버로딩 된 생성자 중 가장 가까운 것이 호출된다.

this()

  • 객체 내 정의된 다른 생성자 호출
  • 생성자 오버로딩이 많아짐에 따라 생성자 간에 중복된 코드가 발생할 수 있다.
  • 이러한 중복 코드를 줄이기 위해서는 this()를 사용한다.
  • this()는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫 줄 에서만 허용된다.

🎇메서드

메서드

  • 객체의 동작을 의미한다.

메서드 정의

  • 리턴타입 메서드명 (매개변수, ...) { 실행코드 }
  • 매개변수란? : 메서드 호출 시 메서드 선언부의 매개변수에 순서대로 대입되어 메서드 블록 실행 시에 이용된다.

메서드 리턴타입

  • 리턴 타입 O : return 예약어 + 리턴값(리턴 타입과 동일하거나 허용범위가 작은 값 또는 그러한 값을 담은 변수)
  • 리턴 타입 X : return 예약어 생략이 가능하며, 사용 시 메서드 강제 종료를 의미한다.

가변 매개변수

  • 메서드 정의 시, 매개변수의 갯수를 몇 개 정의할 지 애매한 경우 매개변수를 배열 타입으로 선언해준다.
    Ex) int sum(int[] values)
  • ...(가변 매개변수) : 여러 개의 값을 매개변수로 받을 수 있도록 내부적으로 배열로 받도록 된 매개변수이다.
    Ex) int sum(int ... values) → 호출 시, sum(값1,값2,값3, ...) 이런식으로 호출해준다.

메서드 호출

  • 참조변수명.메서드명()
  • 객체 내부에서 자체 메서드 호출 시 메서드명으로만 호출이 가능하다.
  • 객체 외부에서 메서드 호출 시, 객체 생성 후 해당 객체의 메서드를 호출해줘야 해당 객체의 메서드가 호출 된다.

메서드 오버로딩

  • 메서드 이름이 같고, 매개변수의 갯수 또는 타입이 다른 경우 메서드 오버로딩이 가능하다.
  • 단, 반환 타입은 오버로딩을 구현하는데 아무런 영향을 미치지 못한다.
  • 메서드 오버로딩의 대표적인 예로는 'System.out.println()' 메서드가 있다.
profile
백엔드 서버 엔지니어

0개의 댓글