JAVA- 메소드 오버로딩 method overloading
2023. 1. 25. 16:42ㆍ코딩일기/JAVA
메소드 오버로딩(method overloading)
같은 이름의 메서드를 매개변수 구성만 다르게 해서 선언하는 것
public class Main {
public static void main(String[] args) {
// 메소드가 왜 필요한지에 대해 알아봤으니
// 클래스의 메소드를 정의하는 4가지의 문법적 모습 [ 리턴타입 O/X, 파라미터 O/X ]
Test t = new Test();
t.aaa(); // 1)
t.aaa(5); // 2)
int k = t.bbb(); // 3)
System.out.println(k);
int n = t.bbb(5); // 4)
System.out.println(n);
System.out.println();
// 사칙연산을 해주는 계산기 객체 생성(기능[메소드]만 있는 클래스)
Calculator cal = new Calculator();
int a = 10;
int b = 5;
int sum = cal.sum(a, b);
int sub = cal.subtract(a, b);
int mul = cal.multiply(a, b);
int div = cal.divide(a, b);
System.out.println(sum);
System.out.println(sub);
System.out.println(mul);
System.out.println(div);
// 실수형 숫자들의 사칙연산 의뢰
double c = 3.5;
double d = 4.6;
System.out.println(cal.sum(c, d));
System.out.println(cal.subtract(c, d));
System.out.println(cal.multiply(c, d));
System.out.println(cal.divide(c, d));
// 이런식으로 같은 기능인데 자료형이 다를 때 활용하는 문법 - 오버로딩
// 좀 더 확장하면 GUI 환경에서는 모든 데이터가 문자열 타입임.
System.out.println(cal.sum("245", "487"));
System.out.println();
// 가변인자 ... 연산자
cal.add();
cal.add(5);
cal.add(5, 3);
cal.add(5, 3, 6);
cal.add(5, 3, 8, 7);
}
}
public class Calculator {
// 사칙연산 기능들 : 메소드
int sum(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
int multiply(int x, int y) {
return x * y;
}
int divide(int x, int y) {
return x / y;
}
// 위 4개의 기능은 모두 정수형만 처리하니
// 실수형 사칙연산 기능이 별도로 있어야 함.
// 별도의 덧셈기능이라며 함수 이름을 다르게 하면
// 함수의 이름을 똑같이 하고 파라미터를 다르게 적용하는 문법
// 메소드 오버로딩 (Overloading)
double sum(double x, double y) {
return x + y;
}
double subtract(double x, double y) {
return x - y;
}
double multiply(double x, double y) {
return x * y;
}
double divide(double x, double y) {
return x / y;
}
// 숫자모양의 문자열 데이터들의 산술 덧셈 결과 리턴해주는 기능 메소드
// 덧셈기능 sum 메소드의 오버로딩
int sum(String x, String y) {
// 문자열을 정수로 변환해주는 기능(메소드)을 이용
int a = Integer.parseInt(x);
int b = Integer.parseInt(y);
return a + b;
}
// 전달받은 값의 누적된 덧셈결과를 계산하는 기능
// 파라미터의 개수가 몇개일지 모를때 사용하는 특별한 매개변수 연산자 ...
// 가변 길이 인자
void add(int... ns) {
// ns는 배열객체가 됨.
System.out.println("전달받은 데이터 개수 : " + ns.length);
for (int i : ns) {
System.out.print(i + ", ");
}
System.out.println();
int k = 0;
for (int i : ns) {
k += i;
}
System.out.println("합 : " + k);
}
}
public class Test {
// 1) 리턴X 파라미터X
void aaa() {
System.out.println("aaa");
}
// 2) 리턴X 파라미터O
void aaa(int n) {
System.out.println("n: " + n);
}
// 3) 리턴O 파라미터X
int bbb() {
return 10;
}
// 4) 리턴O 파라미터O
int bbb(int n) {
return n * 3;
}
}
반응형
'코딩일기 > JAVA' 카테고리의 다른 글
Java-상속 Inheritance (0) | 2023.01.27 |
---|---|
Java - 생성자 Constructor (0) | 2023.01.26 |
JAVA-객체 지향 프로그래밍(OOP) (0) | 2023.01.25 |
Java-Method (0) | 2023.01.25 |
JAVA-Array 연습 문제 풀기 (0) | 2023.01.25 |