[Java] function 함수

2024. 10. 4. 02:19Java

오늘은 필요한 함수를 미리 만들어두고,

필요할때 마다 함수를 호출하여 사용해보자.

 


 

Quiz

원의 반지름을 전달받아, 원의 넓이를 반환하는 함수
원주율은 3.14로 간주한다 

 

단, 사용자가 정수를 입력하든, 실수를 입력하든 모두 정상 작동되도록 하여라.

package function;

public class Ex01 {

 
  static double getCircleArea(int radius) {	//	정수를 넣어도 정상 실행
	double area = radius * radius * 3.14;
	return area;
  }
  
	
  static double getCircleArea(double radius) {	//	실수를 넣어도 정상 실행 
	double area = radius * radius * 3.14;
	return area;
  }
  
 
  public static void main(String[] args) {
//	함수 오버로딩 : 같은 이름의 함수에 여러 정의가 연결되어 있다
//	같은 이름으로 여러 함수가 중복으로 정의 될 수 있다 
		
        
// 	예시 1)  문자열을 사용하는 substring 함수
//		인자 1개	입력값이 begin 			begin ~ 끝
//		인자 2개	입력값이 각각 begin , end 	begin ~ end -1 
		
        
	String text = "Authentication Number is 132675";
	String s1 = text.substring(15);		//	문자열을 잘라내고 싶다면 substring 
	String s2 = text.substring(15, 21);
		
        
	System.out.println("s1 : " + s1);
	System.out.println("s2 : " + s2);
		
        
//	오버로딩된 함수를 호출할때는 
//	값만 넣으면 자료형에 맞게 알아서 정의를 찾아감  
	double d1 = getCircleArea(3);
	double d2 = getCircleArea(2.2);
		
	System.out.printf("d1 : %.2f\n", d1);
	System.out.printf("d2 : %.2f\n", d2);
		
        
		
//	함수 오버로딩의 기준은 매개변수의 개수 및 자료형, 혹은 매개변수의 순서
//	반환자료형은 오버로딩에 영향 XXX
}
	
    
	static int add(int n1, int n2) {
		return n1 + n2;
		
	}
	static double add(double n1, double n2) {
		return n1 + n2;
		
	}
	static String add(String n1, String n2) {
		return n1 + n2;
		
	}

  }
}

 


 

사용자는 코드가 어떻게 작성되어있는지 알 수가 없다.

 

지금처럼 반지름을 입력하고 원주율을 구하는 프로그램을 작동할때 사용자가 어떤 자료형으로 입력할지 정확히 알 수없다. 

 

최대한 입력의 범위를 미리 지정하고 사용자에게 알려준 뒤에, 다른 방식으로 입력하였을때도 정상작동되도록 구현해야한다.

 

tip >>

메서드 오버로딩 덕분에 복사 붙여넣기를 통해 여러 메서드를 만들 수 있으나, 오버로딩이 불가능한 경우도 있다 

 

메서드 오버로딩이 불가능한 경우
  1) 매개변수의 자료형 일치  2) 매개변수 개수 일치    3) 매개변수 순서 일치