본문 바로가기
Programming Languages/Java

Chapter 10. 메소드

by 더 이프 2023. 1. 10.
728x90

목차

    1. 메소드

    ■ 메소드란?

    • 메소드는 클래스 내부에 정의되어 있는 함수를 지칭
    • 자바는 클래스 내부에 작성해야 해서 일반 함수는 존재하지 않고 모두 메소드라고 부름
    • 메소드는 같은 이름을 사용할 수 없지만 가능한 경우가 있음
      • 같은 이름을 사용가능한 경우는 매개 변수에 따라 같은 이름으로 작성가능(오버로딩)

     

    2. 오버로딩(Overloading)

    ■ 오버로딩이란?

    • 같은 메소드명을 중복하여 사용하는 것을 의미
    • 접근 지정자, 반환값이 달라지면 오버로딩 불가능
    • 오버로딩은 매개 변수의 자료형, 갯수에 따라 같은 이름의 메소드명으로 선언 가능

     

    3. 예시

    ■ Method1

    package j08_메소드;
    
    public class Method1 {
    
    	// 매개변수 : x, 반환 : x
    	// 매개변수가 입력
    	// void는 공허함을 뜻하며, 값을 반환하지 않음
    	// 호이스팅 : 위에서 아래로 코드를 먼저 분석하여 정의를 먼저 하고 그 뒤에 실행해서 main 메소드의 위, 아래 둘다 작성 가능
    	public static void method1() {
    		System.out.println("단순 실행");
    		System.out.println();
    	}
    
    	// 매개변수 : int 하나 입력, 반환 : x
    	public static void method2(int num) {
    		System.out.println("num : " + num);
    		System.out.println();
    	}
    
    	// 매개변수 : int 두개 입력, 반환 : x
    	public static void method3(int num, int num2) {
    		System.out.println("num : " + num);
    		System.out.println("num2 : " + num2);
    		System.out.println();
    	}
    
    	public static String method4() {
        	// 반환은 여러개의 값을 할 수 없고 무조건 하나만 가능
    		return "데이터 반환";
    	}
        
    	public static String method5(int age) {
        	// 독립된 공간으로 변수 ageStr을 main에서도 사용 가능
    		String ageStr = age + "살";
    		return ageStr;
    	}
    
    	public static void main(String[] args) {
    		String ageStr = "30살";
    
    		method1();// 함수 호출
    		method2(100);
    		method3(200, 300);
    
    		System.out.println(method4());
    		System.out.println();
    
    		String data1 = method4();
    		System.out.println(data1);
    		System.out.println();
    
    		System.out.println(method5(30));
    		System.out.println();
    
    	}
    
    }

    ■ Method2

    package j08_메소드;
    
    public class Method2 {
    
    	public static int sum(int x, int y) {
    		int result = x + y;
    
    		return result;
    	}
    
    	public static void main(String[] args) {
    
    		int a1 = 10;
    		int b1 = 20;
    
    		int a2 = 20;
    		int b2 = 30;
    
    		int a3 = 30;
    		int b3 = 40;
    
    		int total1 = 0;
    		int total2 = 0;
    		int total3 = 0;
    
    		total1 = a1 + b1;
    		total2 = a2 + b2;
    		total3 = sum(a3, b3);
    
    		System.out.println(total1);
    		System.out.println(total2);
    		System.out.println(total3);
    	}
    
    }

    ■ Method3

    package j08_메소드;
    
    public class Method3 {
    
    	// 메소드의 오버로딩(오버로드) : 호출할(부를) 때 달라지는 것
    	public static void ov1() {
    		System.out.println("매개변수 없음");
    	}
    
    	public static void ov1(int a) {
    		System.out.println("int 매개변수 하나");
    	}
    
    	// 오버로딩은 무조건 매개변수에 따라 달라짐
    	// 접근 지정자, 반환값이 달라지면 오버로딩을 할 수 없음
    	public static int ov1(int a) {
    		System.out.println("int 매개변수 하나");
    		return a;
    	}
    
    	public static void ov1(int a, String b) {
    		System.out.println("int 먼저 그다음 String");
    	}
    
    	public static void ov1(String a, int b) {
    		System.out.println("String 먼저 그다음 int");
    	}
    
    	public static void main(String[] args) {
    		ov1();
    		ov1(10);
    
    	}
    
    }