today_is

[ function ] 본문

java

[ function ]

ye_rang 2023. 12. 1. 15:11

오늘의 목표 >>

미리 함수를 만들어두고 필요할때마다 호출해보자!


 

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;
		
	}

  }
}

 


study_review >>

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

 

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

 

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

 

 

tip >>

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

 

 

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

'java' 카테고리의 다른 글

DAO 와 DTO (template 이용) - 1  (0) 2023.12.03
[ exception ] 예외 처리  (0) 2023.12.03
[ for ] 별찍기 - 심화  (0) 2023.12.01
[ for ] 별찍기  (0) 2023.11.30
[ 프로그래머스 java ] 신규 아이디 추천 (Lv.1)  (0) 2023.11.27