JAVA - 객체지향언어 오버로딩 그리고 예제
2022. 7. 28. 21:51ㆍ3층 1구역 - 개발의 장/JAVA
객체지향언어 그러니까 클래스를 만들면서 오버로딩과 오버라이딩에 대해 듣게 된다.
인터넷강의나 책 같은 곳을 보다보면 꽤 자주 볼 수 있는 단어인데, 얘네는 대체 어떤 역할을 할까??
1. 오버로딩(OverLoading)??
오버로딩은
같은 이름의 메서드 여러개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술을 말한다.
이게 대체 무슨 말 일까?
설명을 풀어보도록 하자.
필자가 게임을 하는데, 데미지가 나오질 않아서
무기 강화를 하려고 한다.
근데 무기 강화 시스템이 좀 특이하다.
최대 강화 수가 +9인데
+1~5은 골드(in게임 재화)로 강화하고,
+6~8은 보석(in게임 강화재료)으로 강화하고,
+9는 엘리트몬스터의 전리품으로 강화를 한다.
여기서 메서드는 '무기 강화' 을,
in게임의 재화, 강화재료, 몬스터의 전리품들은 '매개변수의 유형' 을,
각 강화 수의 커트라인은 '매개변수의 개수' 를 뜻한다고 생각하면 될 듯 하다.
이제 예제를 보자.
1-1. 예제
Print.java
package constructor;
public class Print {
public static void printArr() {
System.out.println();
}
public static void printArr(int[] arr) {
for (int a : arr)
System.out.println(a);
}
// static은 선택 오버로딩을 할때
public static void printArr(String[] strs) {
for (String s : strs)
System.out.println(s);
}
public static void printArr(double[] doubles) {
for (double d : doubles)
System.out.println(d);
}
}
위와 같이 printArr는 같은데 소괄호 안에 있는 매개들이 다르지 않은가?
이게 오버로딩이다.
PrintMain.java
package constructor;
public class PrintMain {
public static void main(String[] args) {
int[] scores = { 100, 13, 44 };
String[] name = { "김변수", "이상수", "박참조" };
double[] doubles = { 1.1, 2.2, 3.3 };
Print.printArr(scores);
Print.printArr();
Print.printArr(name);
Print.printArr();
Print.printArr(doubles);
// 오버로딩(Overloading) : 같은 이름의 메서드 여러개를 가지면서
// 매개변수의 유형과 개수가 다르도록 하는 기술
// 오버라이딩(Overriding) : 상위 클래스가 가지고 있는 메서드를
// 하위 클래스가 '재정의'해서 사용
}
}
오버로딩이 아닌 예제
int add(int x, int y, int z) {
int result = x + y + z;
return result;
}
long add(int a, int b, int c) {
long result = a + b + c;
return result;
}
// 반환타입은 다르지만 매개변수의 자료형과 개수는 같기에 오버로딩이 아닙니다.
오버로딩의 다른 예제
int add(int x, int y, int z) {
int result = x + y + z;
return result;
}
long add(int a, int b, long c) {
long result = a + b + c;
return result;
}
int add(int a, int b) {
int result = a + b;
return result;
}
// 오버로딩의 조건에 부합하는 예제입니다.
'3층 1구역 - 개발의 장 > JAVA' 카테고리의 다른 글
JAVA - 객체지향언어 입력 받은 정수 거꾸로 하는 퀴즈 (2022-07-28) (0) | 2022.07.28 |
---|---|
JAVA - 객체지향언어 오버라이딩 (0) | 2022.07.28 |
JAVA - 객체지향언어 생성자를 이용한 노동자 임금 출력(2022-07-28) (0) | 2022.07.28 |
JAVA - 객체지향언어 홀수, 짝수 퀴즈에서의 생성자(2022-07-28) (0) | 2022.07.28 |
JAVA - 객체지향언어 절대값과 학점 출력하는 퀴즈(2022-07-28) (0) | 2022.07.28 |