728x90
반응형
💡오버로딩
오버로딩(Overloading) - 기존에 없는 새로운 메소드를 정의하는 것
: 하나의 클래스에 같은 이름의 메소드를 여러 개 정의하는 것
ex) 생성자
💬조건
1. 메소드의 이름이 같아야 한다.
2. 매개변수의 개수 또는 타입이 달라야 한다.
3. 매개변수는 같고 리턴타입이 다른 경우는 오버로딩이 성립되지 않는다.
(리턴타입은 오버로딩을 구현하는데 아무런 영향을 주지 못한다.)
- 매개변수의 이름이 다른 것은 오버로딩이 아니다.
int add(int a, int b) {return a+b;} int add(int x, int y) {return x+y;}
- 리턴타입은 오버로딩의 성립조건이 아니다.
int add(int a, int b) {return a+b;} long add(int a, int b) {return (long)(a+b);}
- 매개변수의 타입이 다르므로 오버로딩이 성립한다.
long add(int a, long b) {return a+b;} long add(long a, int b) {return a+b;}
- 오버로딩의 올바른 예 - 매개변수는 다르지만 같은 의미의 기능 수행
int add(int a, int b) {return a+b;} long add(long a, long b) {return a+b;} int add(int[] a) { int result = 0; for(int i=0; i<a.length; i++) { result += a[i]; } return result; }
📃오버로딩 예제 1
두 개의 정수를 입력받아 합, 차, 곱, 몫을 반환해라.
- 오버로딩 사용
import java.util.Scanner;
//두 개의 정수를 입력받아 합, 차, 곱, 몫을 반환하는 static 메소드
public class MyMath {
// 오버로딩
static int getSum(int a, int b) {
return a+b;
}
static int getSum(int a, int b, int c) {
return a+b+c;
}
static float getSum(float a, float b) {
return a+b;
}
static int add(int a, int b) {
return a + b;
}
static int sub(int a, int b) {
return a - b;
}
static int mul(int a, int b) {
return a * b;
}
static int div(int a, int b) {
return a / b;
}
}
📃오버로딩 예제 2
카드 뽑기 생성자 오버로딩
public class CardTest {
public static void main(String[] args) {
Card c1 = new Card();
c1.showInfo();
Card c2 = new Card("diamond", 7);
c2.showInfo();
}
}
class Card {
String kind;
int number;
// 생성자 생성하기 - 기본 생성자
Card() {
kind = "heart";
number = 1;
}
Card(String str, int n) {
kind = str;
number = n;
}
void showInfo() {
System.out.println(kind + ", " + number);
}
}
📃오버로딩 예제 3
public class CarTest {
public static void main(String[] args) {
Car c = new Car();
}
}
class Car {
static String product = "KIA";
String color;
String gearType;
int door;
// 기본 생성자
Car() {
this("auto", "white", 4);
}
// 생성자 오버로딩
Car(String gearType, String color, int door) {
this.gearType = gearType;
this.color = color;
this.door = door;
}
void showInfo() {
System.out.println("차종 : " + product + " | 기어 종류 : " + gearType + " | 문 : " + door + " | 색상 : " + color);
}
}
📃예제 4
Tv 예제
public class TvTest {
public static void main(String[] args) {
Tv t;
t = new Tv();
t.power();
t.setChannel(11); // t.channel = -1; (X) 메소드와 변수 사용하기
// t.channelDown();
// System.out.println(t.channel);
t.showInfo();
Tv t2;
t2 = new Tv();
t2.power();
t2.setChannel(7);
t2.showInfo();
}
}
class Tv {
String color;
int channel;
boolean power;
void power() {
power = !power;
}
// 입력받은 정수 값으로 channel(멤버변수)를 설정
void setChannel(int n) {
if (n<0 || n>100) {
System.out.println("잘못된 채널 입력입니다.");
return;
}
channel = n;
}
// 멤버변수 channel을 반환
int getChannel() {
return channel;
}
void channelUp() {
channel++;
}
void channelDown() {
channel--;
}
// 전원의 on/off 여부와 현재 채널을 출력
void showInfo() {
if(power == false) {System.out.println("전원 상태 : OFF");}
else {System.out.println("전원 상태 : ON");}
System.out.println("현재 채널 : " + channel);
}
}
728x90
반응형
'Language > JAVA' 카테고리의 다른 글
JAVA 5일차 - 오버라이딩 / 상속 (0) | 2022.06.26 |
---|---|
JAVA의 정석 3판 - 객체지향 프로그래밍 연습문제(3) (0) | 2022.06.24 |
JAVA 5일차 - 변수와 메소드 / 재귀함수 (0) | 2022.06.24 |
JAVA의 정석 3판 - 객체지향 프로그래밍 연습문제 (0) | 2022.06.23 |
JAVA 4일차 - 객체 지향 프로그래밍(2) (0) | 2022.06.23 |
댓글