본문 바로가기

JAVA/변수 및 객체, 기타

메소드와 return, 오버로딩

1. 메소드란

수학의 함수와 비슷하며 호출을 통해 사용

전달값이 없는 상태로 호출하거나 어떤 값을 전달하여 호출

함수 내에서 작성된 연산 수행. 수행 후 반환 값/결과 값은 있거나 없을 수도 있음

 

표현식

접근제한자 [예약어] 반환형 메소드명([매개변수]){

    //기능정의

}

 

2.메소드의 예약어

static : static 영역에 할당하여 객체 생성 없이 사용

final : 종단의 의미, 상속 시 오버라이딩 불가능

abstract : 추상 메소드를 뜻함. 상속시 반드시 오버라이딩으로 완성시켜 사용해야함.

synchronized : 동기화 처리, 공유 자원에 한 개의 스레드만 접근 가능함

 

3. 메소드 매개변수

기본 자료형 : 기본형 매개변수 사용 시 값을 복사해서 전달. 매개변수 값을 변경하여도 본래 값은 변경되지 않음

배열/클래스 : 배열/클래스 등 참조형을 매개변수로 전달시 데이터의 주소값을 전달(얕은 복사)

가변인자 : 매개변수의 개수를 유동적으로 설정하는 방법. 가변 매개변수와 매개변수가 있으면 가변 매개변수를

              마지막에 설정(자료형...변수명) --> 배열형식으로 들어간다. 즉 저 말은 자료형[] 변수명과 같다.

 

매개변수와 반환형의 타입은 서로 상관없다. 

 

4. 반환

void : 반환형이 없음을 의미, 반환 값이 없을 경우 반드시 작성

기본자료형 : 연산 수행후 자료 결과가 기본자료형일 경우 사용

배열 : 연산 수행후 반환 값이 배열일 경우 주소값 반환

클래스 : 연산 수행후 반환 값이 해당 클래스 타입의 객체일 경우 해당 객체의 주소값이 반환

 

호출한 곳 에서 받을 경우 반환 값에 맞는 자료형으로 받아야함

 

 

5.return

1.해당 메소드를 종료하고 자신을 호출한 메소드로 돌아가는 예약어

반환값이 있다면 반환 값을 가지고 자신을 호출한 메소드로 돌아감

(void의 경우 return이 생략되어있을 뿐 존재한다.)

2.반복문에 사용할 경우 모든것을 종료하고 자신을 호출한 위치로 돌아간다.

 

6. 메소드의 종류

1)매개변수가 없고 리턴 값이 있을 경우 

   접근제한자 [예약어] 반환형 메소드명(){

      //기능정의

       return 값/변수;  (반환형 == 값/변수의 자료형)

}

 

2)매개변수가 있고 리턴 값이 없을 경우

  접근제한자 [예약어] void 메소드명(자료형 변수명){

     //기능정의

}

 

3)매개변수가 없고 리턴값이 없을 경우

   접근제한자 [예약어] void 메소드명(){

    //기능정의

}

 

4) 매개변수가 있고 리턴값이 없을 경우

  접근제한자 [예약어] 반환형 메소드명(자료형 변수명){

  //기능정의

  return 값/변수; (반환형 == 값/변수의 자료형)

}

 

메소드 안에 메소드를 사용 할 수있다.

public void method1(int a){

  System.out.println(a);

}

 

public void  method2(){

  int a = 1;

  int b = 2;

 

 method1(1+2);

}

   --> method2를 호출할경우 method1의 식이 작동하여 3이 출력된다.

 

7.getter/setter

 getter/setter는 캡슐화된 객체의 전역변수를 사용 하기 위한 메소드이다.

사용할 변수가 있는 객체의 클래스에 작성한다.

 

private int pNum;

private String name

private double t; 

private boolean turef

 

getter : 필드(클래스)에 저장된 값을 읽어서 요청한 곳으로 보내기 위한 메소드이다.

접근제한자 자료형 get/is변수명(){ (get뒤에 오는 변수명의 첫글자는 대문자이다)

    retrun 변수명;

}

public String getName(){

  return name;

}

 

public double getT(){

  return t;

}

 

단 변수가 2단어이상으로 이루어져있고 첫단어가 문자 한개면 소문자로 사용한다.

public int getpNum(

  return pNum;

)

 

boolean의 경우는 get 대신 is를 쓴다.

public boolean isTruef(){

   return truef;

}

 

setter : 필드(클래스에) 값을 저장(초기화)하기 위해 사용 한다.

이름 명명 규칙은 getter와 동일하다(

1. set 뒤에 오는 변수명의 첫글자는 대문자,

2단어이상이고 첫단어가 문자 한개면 소문자)

 

접근제한자 void set변수명 (자료형 변수명){()

    (this.)필드명 = 값/변수명;(매개변수를 그대로 받아 사용할 수있다).

}

 

public void setName(String name){

    this.name = name;

}

 

public void setT(double t){

    this. t= t;

}

 

public void setpNum(int pNum){

    this.pNum =pNum ;

}

 

public void setTruef(boolean truef){

    this. truef= truef;

}

 

set메소드에 한 번에 여러개를 지정하는 방식도 가능하다.

 

public void setName(int type){ // 외부 정수값을 받아 와서 이름과 불린값을 설정할 때

    switch(type) {

      case 1: this.name = 김철수;

                this.truef = false;

 

      case 2: this.name = 김영희;

                 this.truef = true

    };

}

 

private 접근제한자를 가진 static 변수를 set을 하려면 this. 대신 클래스명. 을 사용한다.

public void set변수명(자료형 변수명){

    클래스명.변수명 = 변수명

}

 

8.오버로딩

한 클래스 내에서 같은 이름의 메소드를 여러개 정의하는것

(생성자는 메소드가 아닌것 같지만,  특별한 메소드로도 볼 수 있다)

 

1)성립조건

 같은 메소드 이름, 다른 매개변수 선언부 (매개변수 타입, 개수, 다른 타입간의 순서)

 

메소드의 리턴타입과 접근제한자는 오버로딩의 조건과 관계가 없다.

 

 

'JAVA > 변수 및 객체, 기타' 카테고리의 다른 글

상속  (0) 2019.12.17
객체 배열  (0) 2019.12.16
객체지향 3대 특성  (0) 2019.12.15
클래스의 변수  (0) 2019.12.15
클래스  (0) 2019.12.15