Joslynn의 하루

대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 - 4일차 노트 정리_Method_ 220721 본문

MSA Full-Stack 개발자 양성과정/Java

대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 - 4일차 노트 정리_Method_ 220721

Joslynn 2022. 7. 21. 19:06

 


Method

- 객체 안에 선언되어 객체가 가지고 있는 기능

- 반드시 class 내부에 선언

- 반드시 호출해서 사용(호출된 순서 중요)

- 재귀호출가능 (자기 자신 안에서 자신을 호출)

- Method 마지막 구현부에서 return할 수 있음 (1번만 가능)

- 재사용 목적: 코드의 중복 피할 수 있음

 

Method 작성법

 

modifiers(제한자)

: 둘 이상이 올 때는 공백으로 구분한다. 

s: 0개 이상 올 수 있다. 

 

1) 접근 제한자 (access modifier): method의 접근을 제한

      ①public: 어디서나, 아무나 접근 가능

       protected: 상속 관계라면 어디서나(폴더) 접근 가능

      ③생략(작성x): 같은 폴더 내에서 아무나 접근 가능

      ④private: 하나의 class 내에서만 접근 가능 [캡슐화(은닉)에 사용]

 

: 순차적으로 접근 범위가 좁아짐

 

2) 일반 제한자(특수한 경우)

static

final

abstract

synchronized

 

:특수한 경우 사용

 

작성 순서: 보통 access modifier 먼저, 이후 일반 제한자


return Type

*객체 타입

: 반드시 한 개 작성, 생략X

① 기본형 8가지 중 1개

② Object Type 중 1개

④ void: 리턴값이 없다.

: 반드시 구현부 마지막 줄에 return 가지고 갈 값; void는 작성X

 

* method

선언부

구현부: 기능이 들어가는 부분, { }

 

return: method 끝나고 난 뒤 가지고 나온 값

 

method이름(인수 = parameter = 아규먼트 = 매개변수 (들어오는 값) ) 기능 

 

}

: method 이름은 indentifier 규칙에 따라 개발자가 작성

 

*인수 = parameter = 아규먼트 = 매개변수 (들어오는 값)

: method를 호출하는 사람이 들고 들어오는 두 개의 값 → 받아줄 변수 필요 → 변수 선언

: 표현 방식 (DataType 변수 이름, DataType 변수 이름....)

: 호출하는 사람이 들고 들어올 수 있는 값을 저장할 수 있는 변수 (들고 들어오는 값은 변수의 type과 동일)


 

*Method 작성 방법

modifier  returnType  method이름( 인수 ) //메소드 선언 {  기능  } // 구현부, 마지막 부에 retrun 값;


 

Method 호출 방법

1. 가장 일반적인 방법

  ㄱ. 호출하려는 method를 감싸고 있는 class 생성 (객체생성: new)

        → class 이름(dataType) 변수이름 = new class이름();

/** 변수는 stack, 객체는 heap에 위치, 변수는 객체의 주소를 값으로 가짐; 객체를 new로 생성하고 나면 일회성으로, 뒤에 사용되지 않으면, 가비지 콜렉터에 수집됨. 지속적 사용을 위해서는 변수에 담아줘야 함*/

 

  ㄴ. 생성된 객체를 이용하여 method를 호출

        → 방법: 변수이름.method이름([값, 값,...]);

class Test{
	public void aa(){
    }
    int bb(){
    	기능;
        return 5;
    }
    public String cc(int i){
    	기능;
        return "Method";
    }
} // 총 3개의 method

class MainApp { 
    public static {
    	Test t= new Test(); // 변수 t에 해당 클래스의 주소값이 저장
             t.속성
             t.method이름(값,...);
             // 1번 method 호출
             t.aa(); // 인수 없으므로 값 들고가면 안됨
             int a = t.bb(); // return 값 5를 받아주려면 변수가 있어야 함, 우항 먼저 연산 완료 후 좌항에 대입 
             String s = t.cc(3); // int 하나 가져가야 함, return ",Method" 받으려면 변수 필요
    }
}

2. static이 붙은 메소드 호출 방법

- 객체를 생성하지 않고 호출 가능

- class이름.method([값, 값, ....]);

- static 영역은 정적 영역

 

Ex> double d = Math.random(); // 0.0 ~ 0.99999 , 메소드를 호출

class Math {
	public static double random(); {
	}
}

 

 

class Test{
	public void aa(){
    }
    
    public int bb(String s){
    //기능
    }
    
    public static void cc(int i){
    }
    
    protected static double dd(String s){
    //기능
    return 5.5;
    }
    //3번 method 호출 시, Test.cc(int 값 아무거나);
 }
//문자열을 숫자로 변환하는 메소드
int i = Interger.parselnt("10");

class Interger{
	public static int parselnt(String s) {

	//기능
	return 숫자값;

	}
}

//숫자를 문자열로 변환하는 메소드
String s = Interger.toString(5);

class Interger{
	public static String toString(int a) {

	//기능
	return 숫자값;

	}
}

 

3. 같은 class 내부에서 method 호출하는 방법

this.method이름( [값, 값, ... ] ); //this. 생략 가능 but 불가능한 경우도 있음 

: static은 this로 접근하지 못 함

: *this; 현재 객체; 생성된; // 현재 객체 안에 있는 method 

 

Comments