다형성
- 런타임 타입 다형성 - 오버라이딩
- 컴파일 타입 다형성 - 오버로딩
오버라이딩에 대한 설명은 이전 포스팅에서 다뤘다.
[ JAVA ] 객체지향언어의 특징 - 상속성
객체지향언어의 3대 특징 1. 상속성 2. 캡슐화 3. 다형성 상속성 - 클래스를 상속받아 클래스를 만든다. class A { int data = 0; void print(){ System.out.println( "print" + this.data ); } } class B exte..
ddsiq.tistory.com
오버로딩
class Temp{
int add( int i , int j ){ return 100; }
int add( int i ){ return 200; }
// void add( int i ){} << 오류발생
void print( double i ){ System.out.println( "^-^" );}
void print( float i ) {System.out.println("^^*");}
void print( int i ) {System.out.println("^^!");}
}
public class Main{
public static void main(String[] args){
Temp t = new Temp();
int r = t.add( 10 , 20 );
System.out.println( r ); // 결과 : 100
int k = t.add( 10 );
System.out.println( k ); // 결과 : 200
t.print( 100 ); // 결과 : ^^!
t.print( 100.00 ); // 결과 : ^-^
}
}
- 이름은 같지만 매개변수의 형식(개수, 자료형 등)이 다른 함수는 하나의 클래스 안에 공존할 수 있다.
함수명이 같은 것이 여러개 있을때는 함수의 매개변수 형식이 일치하는 선언을 찾아서 호출. - 리턴타입이 다르다고 해서 이름이 같다고 봐주지 않는다.
- 함수를 찾을 때 매개변수의 자료형과 딱맞아 떨어지는게 있으면 그 함수를 호출, 딱 맞아 떨어지는게 없으면 자동형변환되어 호출할 수 있는걸 찾는다. 이 때 자동형변환되어 호출할 수 있는 함수가 여러개 일 경우 , 서열이 가장 가까운 것을 찾아서 호출한다. (byte< short < "int" < long <"float" <double)
- 이렇게 하나의 클래스 안에서 매개변수의 형태가 다른 같은 이름의 함수가 공존하는 것을 Method Overloading(메서드 오버로딩) 이라고 한다.
- 오버로딩을 쓰는 이유 : 거의 비슷한데 조금 다른 기능의 함수들을 매번 이름을 다르게 주는 것보다 차라리 하나의 이름으로 묶어주고 매개변수 형식만 다르게 하는게 가져다 쓰는 입장에서 훨씬 편하다. 즉 같은 기능의 자료형만 다른 메서드들을 서로 다른 이름으로 기억하지 않아도 된다.
'JAVA > 정리한 것' 카테고리의 다른 글
| [ JAVA ] Abstract 와 Interface (0) | 2022.05.15 |
|---|---|
| [ JAVA ] 객체지향언어의 특징 - 캡슐화 (0) | 2022.05.15 |
| [ JAVA ] 객체지향언어의 특징 - 상속성 (0) | 2022.05.14 |
| [ JAVA ] 자료구조 - 배열( Array )과 리스트 ( List ) (0) | 2022.05.12 |
| [ JAVA ] 클래스(2) (0) | 2022.05.12 |