반응형
1. 메소드 오버로드(overload)란?
- 메소드 오버로딩 : 오버로드 하는중!
- 클래스에 동일한 기능을 제공하는 메소드가 매개변수에 의해 여러개 선언되어야 할 경우, 메소드의 이름을 같도록 선언하는 기능
- 즉, 메소드의 이름이 같더라도 매개변수의 전달된 값에 따라 선택 호출 할 수 있도록 해줌
- = 메소드 오버로드에 의한 다형성
- 오버로드 선언된 메소드는 매개변수에 전달되는 값에 의해 JVM이 메소드를 선택 호출해줌
- 오버로드 된 메소드의 예
- Math.abs( )
- System.out.println() ...
- !!주의!! : 모든 자료형이 되는 것은 아니니 어떤자료형을 사용할 수 있는지 확인하고 사용하자!
2. 다형성(Polymorphism) 이란?
- 하나의 객체가 여러 가지 타입을 가질 수 있는 것
- 따라서 같은 이름의 메소드를 호출할 경우 상태에 따라 메소드를 선택해 실행해줌
호출되는 기능
- 메소드 오버로드에 의한 다형성 = 오버로드에 의한 선택실행 기능
- 메소드 오버라이드에 의한 다형성 = 오버라이드에 의한 선택실행 기능
3. 메소드 오버로드(overload) 선언 규칙
- 오버로드 = 많이 선언하다!
- 중요한 점 ) 동일한 기능을 제공하는 것에만 가능!
- 매개변수의 자료형이 달라야함
- 매개변수의 갯수가 달라야함
- 매개변수의 이름은 상관 없음
- 접근 지정자와 반환형은 오버로드 선언과 무관
- vs 오버라이드도 있음, 헷갈리지 말기
4. 메소드 오버로드 예제
🌊 oop > Overload.java
🌊 oop > OverloadApp.java
package oop;
public class Overload {
//같은 기능을 제공해주는 3개의 메소드
//=> 같은 기능을 제공해주는데 메소드명이 달라서 헷갈려! 오버로드로 개선하자!!
public void displayInt(int param) {
System.out.println("정수값 = "+param);
}
public void displayBoolean(boolean param) {
System.out.println("논리값 = "+param);
}
public void displatString(String param) {
System.out.println("문자열 = "+param);
}
//메소드 오버로드(Method Overload) : 클래스에 동일한 기능을 제공하는 메소드가 매개변수에
//의해 여러개 선언하는 경우 메소드의 이름을 같도록 선언하는 기능
// => 매개변수의 자료형 또는 갯수가 같지 않도록 선언
// => 접근지정자와 반환형은 오버로드 선언과 무관
public void display(int param) {
System.out.println("정수값 = "+param);
}
public void display(boolean param) {
System.out.println("논리값 = "+param);
}
public void display(String param) {
System.out.println("문자열 = "+param);
}
}
package oop;
public class OverloadApp {
public static void main(String[] args) {
Overload overload=new Overload();
//1. 그냥 메소드 호출
overload.displayInt(100); //100
//overload.displayInt(false); //매개변수에 값을 잘못 전달한 경우 에러 발생
overload.displayBoolean(false); //false
overload.displatString("홍길동"); //홍길동
//2. 오버로드된 메소드 호출
//오버로드 선언된 메소드는 매개변수에 전달되는 값에 의해 메소드를 선택 호출
// => 메소드 오버로드에 의한 다형성
//다형성(Polymorphism) : 같은 이름의 메소드를 호출할 경우 상태에 따라 메소드가 선택
//호출되는 기능 - 메소드 오버로드, 메소드 오버라이드
overload.display(200); //정수값 = 200
overload.display(true); //논리값 = true
overload.display("임꺽정"); //문자열 = 임꺽정
//overload.display(12.34); //전달된 값을 대한 자료형의 매개변수가 없는 경우 에러 발생
}
}
반응형
'java > oop' 카테고리의 다른 글
[oop] 6. this 키워드의 개념 (0) | 2024.04.16 |
---|---|
[oop] 5. 생성자(Constructor)의 개념 (0) | 2024.04.15 |
[oop] 3. 자동차 클래스로 만든 자동차 출력 프로그램 (0) | 2024.04.14 |
[oop] 2. 클래스와 객체 (feat.접근지정자(Access Modifier) 설정) (0) | 2024.04.14 |
[oop] 1. oop(object oriented program)의 기초 (0) | 2024.04.13 |