[Java] 메소드/생성자

Yeoonnii·2022년 8월 16일
0

Java

목록 보기
2/30
post-thumbnail
post-custom-banner

자바의 클래스는 fieldmethod를 가진다

  • field(필드) : member(멤버)로 속성을 표현한다
  • method(메소드) : 기능을 표현한다

메소드(method)

어떤 특정한 작업을 수행하기 위한 명령문의 집합
값이 입력되면 입력된 값으로 작업을 수행하여 결과를 반환 한다

메소드의 사용목적

  • 중복되는 코드의 반복적인 프로그램을 피할 수 있음
  • 모듈화로 인한 코드의 가독성 증가
  • 프로그램 문제 및 기능변경시 손쉬운 유지보수 가능
    💡 메소드를 작성할때는 되도록 하나의 메소드가 하나의 기능만을 수행하도록 작성하는것이 좋다
    💡 메소드가 많을수록 외부에서 사용할 수 있는 기능이 많아진다

메소드의 정의

접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부

    // 구현부

}
  • 선언부 : 접근제어자, 반환타입, 메소드의 이름, 매게변수 목록 으로 구성되어 있으며 메소드가 작업 수행시 필요로 하는 값들에 대한 정보를 제공
  • 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시
  • 반환타입(return type) : 메소드의 작업 수행결과인 반환값의 타입을 명시
  • 메소드 이름 : 메소드를 호출하기 위한 이름 명시
  • 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시
    이때 저장하는 변수의 타입이 같아도 변수의 타입을 생략할 수 없다
  • 구현부 : 메소드의 기능을 수행하는 명령문의 집합

메소드 호출

1. 객체참조변수이름.메소드이름();                   // 매개변수가 없는 메소드의 호출

2. 객체참조변수이름.메소드이름(인수1, 인수2, ...);   // 매개변수가 있는 메소드의 호출

생성자(constructor)

자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다. 생성자는 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성시에 실행되어야 하는 작업을 위해서도 사용된다

  • 인스턴스 초기화 란? 인스턴스 변수들을 초기화 하는것을 뜻한다
  • 인스턴스 란? 일반적으로 실행 중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트를 가리킨다

생성자의 조건

  1. 생성자의 이름은 클래스의 이름과 같아야 한다
  2. 생성자는 리턴값이 없다
    👉 생성자도 메서드 이기 때문에 void를 붙여 사용해야 하지만 모든 생성자가 리턴값이 없으므로 void를 생략 할 수 있다

생성자의 선언

1. 클래스이름() { ... }                  // 매개변수가 없는 생성자 선언

2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언

위와 같이 생성자 중에는 매개변수를 전달받아 인스턴스 변수를 초기화하는 생성자도 선언할 수 있다

기본생성자(default constructor)

자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.
하지만 생성자를 정의하지 않고도 인스턴스를 생성할 수 있는데, 그 이유는 자바 컴파일러가 기본 생성자(default constructor)라는 것을 기본적으로 제공해 주기 때문이다

자바 컴파일러는 컴파일 시 클래스에 생성자가 하나도 정의되어 있지 않으면,
자동으로 다음과 같은 기본 생성자를 추가한다

클래스이름() {}

위와 같은 형태의 기본 생성자는 어떠한 매개변수도 전달받지 않으며, 아무런 명령어도 포함하고 있지 않으며 어떤 동작도 하지 않는다.

하지만 만약 매개변수를 가지는 생성자를 하나라도 정의했다면, 기본 생성자는 자동으로 추가되지 않는다
👉 따라서 매개변수를 가지는 생성자를 하나 이상 정의한 후 기본 생성자를 호출하면, 오류가 발생한다

매개변수를 가지는 생성자 하나를 정의한 경우 자동으로 생성되었던 기본 생성자가 사라지기 때문에 추가로 기본 생성자를 정의해주어야 한다

post-custom-banner

0개의 댓글