This is a blog.

자바 기록 6일차 본문

JAVA/Book Summary

자바 기록 6일차

Calcot 2021. 6. 5. 14:29

혼자 공부하는 자바 / 저자 : 신용권

chapter 06. 클래스 정리 -2.

 

 

클래스-2

 

 

메소드

메소드 선언은 선언부와 실행 블록으로구성.

실행블록의 요소

º 리턴타입 : 메소드가 리턴하는 결과의 타입을 표시

º 메소드 이름 : 메소드의 기능이 드러나도록 식별자 규칙에 맞게 이름을 지어줌

º 매개 변수 선언 : 메소드를 실행할 때 필요한 데이터를 받기 위한 변수를 선언

º 메소드 실행 블록 : 실행할 코드를 작성

 

리턴타입 메소드이름 ([매개변수선언,...])[

실행할 코드 작성

}

 

 

메소드 선언

선언부와 실행블록으로 구성된다.

선언부 : 리턴 타입, 메소드 이름, 매개 변수 선언

 

리턴 타입

리턴값의 타입.

리턴값 : 메소드를 실행한 후의 결과값.

메소드는 리턴값이 있을 수도 있고 없을 수도 있으나 있을 경우 리턴 타입이 선언부에 명시되어야 한다.

 

메소드 이름

메소드 작성 규칙

º 숫자로 시작하면 안된다.

º $_를 제외한 특수문자를 사용하지 말 것.

º 관례적으로 메소드 이름은 소문자로 작성.

º 서로 다른 단어가 혼합된 이름이라면 뒤이어 오는 단어의 첫 글자는

대문자로 작성. ex) startEngine

 

매개 변수 선언

메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용

매개 변수가 필요한 경우가 있고 필요 없는 경우가 있다.

외부 클래스에서 다른 클래스의 메소드를 호출하기 위해서는 객체를 생성하고 참조 변수를 이용해야 한다.

ex) Calculator myCal = new Calculator();

myCal.powerOn();

=> Calculator라는 클래스의 메소드를 호출하기 위해 도트(.)와 메소드이름의 형태로

호출 됨.

 

매개 변수의 개수를 모를 경우

ex) 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면 몇 개의 매개 변수가 입력될지 알 수 없다. => 매개 변수의 개수를 결정할 수 없다.

 

int sum(int [] values){} => 배열 사용, 배열의 항목 수는 호출할 때 결정.

 

int[] values = {1,2,3};

int result = sum1(values);

int result = sum1(new int[] {1,2,3,4,5});

 

int sum2(int...arr){} => 배열을 생성하지 않고 값의 목록만 넘겨주는 방법

=> 메소드 호출 시 넘겨준 값의 수에 따라 자동으로 배열이 생성되고 매개값으로 사용된다.

 

int result = arr(1,2,3);

int result = arr(1,2,3,4,5);

 

 

리턴문

메소드 선언에 리턴 타입이 있는 메소드는 반드시 리턴문을 사용해서 리턴값을 지정해야 한다.

return문이 없다면 컴파일 에러 발생.

return문이 실행되면 메소드는 종료된다.

return문의 리턴값은 리턴 타입이거나 리턴 타입으로 변환될 수 있어야 한다.

 

리턴값이 없는 메소드 : void

void로 선언된 메소드에서도 return문을 사용할 수 있다.

=>리턴값을 지정하는 것이 아닌, 메소드 실행을 강제 종료시키는 역할.

 

메소드 호출

클래스 외부에서 메소드를 호출할 경우, 우선 클래스로부터 객체를 생성한 뒤 참조 변수를 이용해서 메소드를 호출해야 한다.

=> 객체가 존재해야 메소드도 존재하기 때문.

 

객체 내부에서 호출

메소드(매개값,...);

타입 변수 = 메소드(매개값,...);

 

객체 외부에서 호출

클래스 참조변수 = new 클래스(매개값,...);

메소드 호출 :

 

참조변수.메소드(매개값,...); //리턴값이 없거나, 있어도 받지 않을 경우

타입 변수 = 참조변수.메소드(매개값,...); //리턴값이 있고, 받고 싶을 경우.

 

 

메소드 오버로딩

클래스 내에 같은 이름의 메소드를 여러 개 선언하는 것.

조건 : 매개 변수의 타입, 개수, 순서 중 하나가 달라야 한다.

 

class 클래스 {

리턴타입 메소드이름 (타입변수,...) {..}

리턴타입 메소드이름 (타입변수,...) {...}

}

=> 매개변수의 타입, 개수, 순서가 달라야 한다.

 

매개값을 다양하게 받아 처리할 수 있또록 하기 위해서 오버로딩이 필요하다.

오버로딩이 아닌 예

1. 매개 변수의 타입과 개수, 순서가 똑같을 경우 매개 변수 이름만 다르게 한 것.

2. 리턴 타입만 다르고 매개 변수가 동일한 것.

ex) int divide (int x, int y){..}

double divide (int boonja, int boonmo) {...}

 

'JAVA > Book Summary' 카테고리의 다른 글

자바 기록 8일차  (0) 2021.06.08
자바 기록 7일차  (0) 2021.06.07
자바 기록 5일차  (0) 2021.06.03
자바 기록 4일차  (0) 2021.06.02
자바 기록 3일차  (0) 2021.06.01
Comments