● 메소드 오버로딩(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);
}
}