メソッド


方法

	// 메소드(언어에 따라 함수, 기능...) 존재의 의의 : 코드의 재사용
	// 1. static 메소드, 클래스 메소드
	// public static <자료형>, (void)<메소드명>(매개변수, 인자, 파라미터){실행문;}
	// 실행은 메소드명();
	// 메소드명 = 명명규칙을 그대로 따른다(첫글자는 소문자)
	// void - return 값의 자료형이 존재하지 않을 경우 자료형자리는 void로
	// 모든 메소드의 끝에는 return. 리턴값이 없는 리턴은 생략가능(!=없는것). void 는 생략되서 생략.
	// 명시적으로 return 적어야하는 경우:
	// 메소드명 중복불가 but 변수는 선언 위치에 따라가능
class Ex01{

/* 아래 함수 01 선언되어있어 중복불가
 public static void func01(){
	System.out.println("");
 }
*/



// 메서드 오버로드 - 메소드의 인자 타입, 유무, 개수에 따라 원칙적으로 중복이 불가하나 허용하는것
// but 가능한 경우있음- main에서 인자 넣고 호출하면 있는거 메소드 호출. 없으면 아래 func01 호출
 public static void func01(int a){
	System.out.println("매개변수 전달받음" +a);
 }

 public static int func01(){
	System.out.println("새롭게 만들어낸 기능1");
	return 100;
 }




 public static void func02(int a){
	System.out.println("새로운기능2 - " + a);
	return;
 }



/* 변수 범위에서 위에서 이미 끝났으므로 a사용가능
 public static void func03(int b, int a){
	System.out.println("새로운기능3 - " + (b+a));
	return;
 }
*/




 public static void func03(int b, int c){
	System.out.println("새로운기능3 - " + (b+c));
	return;
 }



 public static int func04(){
	int x=100;
	int y=20;
	int z=x+y; // 함수 안에서만 유효했기 때문에 main 함수 호출 안된것.. 전달방법은 아래
	return z; // return값을 기준으로 자료형이 void 대신 들어감<public static int func04()>
 }


 public static void main(String[] args){
 	// 자바는 클래스로 구성, 하나의 클래스가 하나의 단위 요소
		
	System.out.println("기존 코드작업 0");

	// main에서 다른 메소드 반드시 호출, 실행은 메소드명();
	// 여러번 불러도 얼마든지 재사용 가능
	// 실행은 메소드명();

	func01();	 
	func01(33333);     // 오버로딩
	func02('A');    
	func02(1234);  
	func02(5554); 
	func03(2,100);


	// 리턴값을 받아 소환!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
	int t=func04();
	System.out.println(t);
	
	// 명시적으로 리턴 필요할때
	//if(t>0){return;}
	return;

	// main 의 기존 작업 사이에 메소드 불러오면 불러온뒤 원래 기존 작업 진행
	//System.out.println("기존코드 계속 0-1");
	//return;




 }
} //Ex01 class End