본문 바로가기

Java

[Java] 18

메소드 오버로딩(overloading)

- 메소드의 이름은 같지만 매개변수의 타입이 다르거나 갯수가 다른 경우를 말한다.

- 리턴 타입과 매개변수 이름과는 관련 없다.

- 다형성(polymorphism)을 구현하는데 사용된다.

다형성(polymorphism)

- 객체지향 언어의 4가지 주요 특징 중 하나로, 하나의 클래스나 함수가 다양한 방식으로 동작 가능한 것을 의미한다.

- 자바의 다형성을 구현하는 방법 중 하나로 오버로딩이 있다.

변수의 생명 주기

1. 지역변수(local variable)

- 메소드 안에 선언된 변수로, 변수가 선언된 영역에서만 사용 가능

메소드를 통해 다른 영역에 존재하는 값 바꾸는 방법

- return을 통하여 값을 복사해서 전달하고, 해당 영역에서 직접 대입하여 바꿔주는 방식을 활용해야 한다.

클래스(class)

- 변수와 메소드를 재사용하기 위해 사용한다.

클래스 선언

class 클래스명 {

}

 

실습(오버로딩)

- 덧셈

public class OverLoadingTest {
	public static void add(int num1, int num2) {
		System.out.println(num1 + num2);
	}
	
	public static void add(int num1, int num2, int num3) {
		System.out.println(num1 + num2 + num3);
	}
	
	public static void main(String[] args) {
		OverLoadingTest.add(10, 20);
		OverLoadingTest.add(10, 20, 30);
	}

}

 

결과

※ 오버로딩과 매개변수 이름

public static void add(int a, int b) {  // 오버로딩은 매개변수의 이름과 관련 없다.
	System.out.println(a + b);
}

※ 오버로딩과 리턴타입

public static void add(int num1, int num2) {  // 오버로딩은 리턴타입과 관련 없다.
	 return num1 + num2;
}

실습(변수의 생명 주기)

public class Variable {
	
	public static void change(int a) {
		a++;
	}	
	
	public static void changeAr(int[] a) {
		a[0] = 100;
	}
	
	public static void main(String[] args) {
		
		int a = 10;
		Variable.change(a);
		System.out.println(a);  // 값을 바꾸려면 return 값을 받아 변수에 대입하여 사용해야 한다.	
		
		int ar[] = new int[3];
		Variable.changeAr(ar);
		MethodTask.printAr(ar);  // MethodTask 클래스의 printAr 메소드 사용하여 배열 출력
		
	}

}

 

결과

 

실습(클래스)

class Student {
	String name;
	int kor;
	int eng;
	int math;
}


public class ClassTest {
	public static void main(String[] args) {

		Student hong = new Student();  // 객체화 → kim : 객체 또는 인스턴스, Student() : 생성자
		Student kim = new Student();
		
		hong.name = "홍길동";
		hong.kor = 90;
		hong.eng = 70;
		hong.math = 80;
		
		kim.name = "김철수";
		kim.kor = 80;
		kim.eng = 90;
		kim.math = 70;
		
		System.out.println("이름 : " + hong.name);
		System.out.println("국어 : " + hong.kor);
		System.out.println("영어 : " + hong.eng);
		System.out.println("수학 : " + hong.math);
		
		System.out.println("이름 : " + kim.name);
		System.out.println("국어 : " + kim.kor);
		System.out.println("영어 : " + kim.eng);
		System.out.println("수학 : " + kim.math);
		
	}
}

 

결과

 

 

 

'Java' 카테고리의 다른 글

[Java] 20  (0) 2022.01.18
[Java] 19  (0) 2022.01.17
[Java] 17  (0) 2022.01.11
[Java] 16  (0) 2022.01.07
[Java] 15  (0) 2022.01.06