반응형
method 중복 (Overloading)
- 동일한 이름의 method를 여러개 만드는 것.
- 매개변수 parameter 유형/개수/순서가 다르다.
💡 return값은 영향을 미치지 않는다.
➰ Overloading 예시

🔆main 클래스
package day13.overload;
public class MainClass {
public static void main(String[] args) {
Basic b = new Basic();
b.input(1);
b.input("홍길동");
b.input("a", 1);
b.input(3, "b");
b.input(100, 100, 1);
//int배열, double배열, string배열
//Arrays.toString();
}
}
🔆 Basic 클래스 (overloadint method 많이 생성..)
package day13.overload;
public class Basic {
/*
* 오버로딩 - 같은 이름의 method를 여러개 만드는 것
*
* <규칙>
* 1. 반환유형 or 접근제어자는 영향을 미치지 않는다.
* 2. parameter type or 종류 or 순서 중 한개만 다르다면 ok~
*/
void input(int a) {
System.out.println("정수 1개 입력");
}
//반환은 상관이 없기때문에 아래는 완전 똑같은 method로 인식된다.
//int input(int a) {
void input(String s) {
System.out.println("문자열 1개 입력");
}
void input(String s, int a) {
System.out.println("문자열 1개 입력, 정수 1개 입력");
}
//parameter 자리 바꾸기 허용.
void input(int a, String s) {
System.out.println("정수 1개 입력, 문자열 1개 입력");
}
void input(double a, double b, int c) {
System.out.println("실수 2개, 정수 1개 입력");
}
}
➰ Quiz - Overloading을 사용하여 도형의 넓이 구하기.
아래 조건을 만족시키도록 코드를 짜보아라..
/* 요구사항
* 부모 Calculator 선언하세요.
* 자식 Computer클래스 생성 합니다.
*
* Calculator 클래스
* Calculator의 멤버변수 int result, double pi를 선언하세요
*
* Calculator의 메서드
* add(int) - result에 값을 누적시키는 기능
* circle(int) - pi를 이용해서 원의 넓이를 리턴하는 기능 (원의넓이: PI * r * r)
* ------------------------------------------------------------------
* Computer 클래스의 메서드
* circle() - 메서드를 오버라이딩 하고, pi대신 하는 Math.PI를 사용해서 원의 넓이를 구하세요.
* rect(double) - 정사각형의 넓이 를 리턴
* rect(double, double) - 직사각형의 넓이 를 리턴
* rect(double, double, double) - 직육면체의 넓이 를 리턴
*
*
* 메인클래스에서 Calculator, Computer를 생성하고 메서드를 확인하세요.
*/
🔆 main 클래스
package day13.quiz;
public class Main {
public static void main(String[] args) {
Computer com = new Computer();
System.out.printf("원의 넓이는 %.2f \n", com.circle(5));
System.out.println("정사각형의 넓이는 "+ com.rect(14));
System.out.println("직사각형의 넓이는 "+ com.rect(14, 23));
System.out.println("직육면체의 넓이는 "+ com.rect(12,14,28));
com.add(12);
com.add(12);
com.add(12);
}
}
🔆 Calculator (부모 클래스)
package day13.quiz;
public class Calculator {
int result;
double pi;
Calculator(){
}
Calculator(int pResult, double pPi){
result = pResult;
pi = pPi;
}
//result에 받은 값을 누적
void add(int num) {
result += num;
System.out.println("누적값: " + result);
}
//pi를 이용해서 원의 넓이를 리턴
double circle(int r) {
double circle_area = pi * r * r ;
return circle_area;
}
}
🔆 Computer (자식 클래스)
package day13.quiz;
public class Computer extends Calculator{
Computer(){
}
Computer(int pResult, double pPi){
result = pResult;
pi = pPi;
}
//pi대신 하는 Math.PI를 사용해서 원의 넓이를 구하세요 (⭐Overriding된 부분)
double circle(int r){
return Math.PI * r * r;
}
/* rect는 ⭐overloading */
//정사각형 넓이
double rect(double length) {
double square = length * length;
return square;
}
//직사각형 넓이
double rect(double depth, double width) {
double rectangle = depth * width;
return rectangle;
}
//직육면체의 넓이
double rect(double depth, double width, double height) {
double cuboid = depth * width * height;
return cuboid;
}
}
➰ Quiz - Arrays.toString()기능을 printArray 클래스로 만들기.
🔆 main 클래스
package day13.quiz2;
import java.util.Arrays;
public class Main {
/*
Arrays.toString() 의 기능을 따라하기
PrintArray클래스
1. toArray() - int[]을 매개변수로 입력받아 배열의 모형을 문자열로 리턴하는 메서드
2. toArray() - 1번과 내용은 같고, char[]을 받도록 overloading
2. toArray() - 1번과 내용은 같고, String[]을 받도록 overloading
*/
public static void main(String[] args) {
PrintArray print = new PrintArray();
int[] i_arr = {1, 2, 3, 4, 5, 6};
System.out.println("==== int 배열 toString() ====");
System.out.println(print.toArray(i_arr));
//System.out.println(Arrays.toString(i_arr));
char[] c_arr = {'h','e','l','l','o'};
System.out.println("==== char 배열 toString() ====");
System.out.println(print.toArray(c_arr));
//System.out.println(Arrays.toString(c_arr));
String[] s_arr = {"hello", "봉쥬르", "니하오", "안녕"};
System.out.println("==== String 배열 toString() ====");
System.out.println(print.toArray(s_arr));
System.out.println(Arrays.toString(s_arr));
}
}
🔆 printArray
package day13.quiz2;
public class PrintArray {
/*overloading : Arrays.toString() 만들어보기.*/
String toArray(int[] arr) {
String s = "[";
for(int i = 0; i < arr.length; i++) {
if( 1 <= i ) {
s += ", ";
}
s += arr[i];
}
s += "]";
return s;
}
String toArray(char[] arr) {
String s = "[";
for(int i = 0; i < arr.length; i++) {
if( 1 <= i ) {
s += ", ";
}
s += arr[i];
}
s += "]";
return s;
}
String toArray(String[] arr) {
String s = "[";
for(int i = 0; i < arr.length; i++) {
if( 1 <= i ) {
s += ", ";
}
s += arr[i];
}
s += "]";
return s;
}
}반응형
'국비지원 > JAVA' 카테고리의 다른 글
| [JAVA] 14-1. super keyword (0) | 2022.10.11 |
|---|---|
| [JAVA] 13-3. this keyword (0) | 2022.10.07 |
| [JAVA] 13-1. method 재정의 (Overriding) (0) | 2022.10.07 |
| [JAVA] 12-3. Quiz 은행 입/출금 서비스 (0) | 2022.10.06 |
| [JAVA] 12-2. 상속 (Inheritance) (0) | 2022.10.06 |