-
[JAVA] 오버로딩과 오버라이딩의 차이점프로그래밍/JAVA 2018. 12. 5. 18:54
오버로딩과 오버라이딩은 자바에서 다형성을 이루는 방법들이다.
오버라이딩은 슈퍼클래스의 메소드 이름, 매개변수 타입과 개수, 리턴 타입을 모두 동일하게 서브 클래스에 재작성 하는 경우
오버로딩은 한 클래스나 상속 관계에 있는 클래스들 사이에 메소드의 이름은 같지만 매개변수 타입이나 개수가 다르게 메소드를 작성하는 경우이다.
오버라이딩은 상속 관계에서 성립하지만 오버로딩은 동일한 클래스 내 혹은 상속 관계 둘다 가능하다.
오버라이딩의 예
class Human // 슈퍼 클래스
public void genderShow(){
System.out.println("Human");
}
}
class Man extends Human{ // Human 클래스를 상속받은 자식 클래스 Man
public void genderShow(){ // 슈퍼 클래스의 메소드 이름, 매개변수 타입과 개수가 모두 일치 -> 오버라이딩
System.out.println("Man");
}
}
class Woman extends Woman{ // Human 클래스를 상속받은 자식 클래스 Woman
public void genderShow(){
System.out.println("Woman");
}
}
Human 클래스의 genderShow() 메소드를 Man 클래스와 Woman 클래스가 상속받아서 각각 오버라이딩 하고 있다.
오버로딩의 예
class Calculator{
public int getSum(int i, int j){
return i+j
}
public int getSum(int i, int j, int k){ // 위의 getSum 메소드와 메소드 이름은 동일하지만 매개변수 개수가 다르다.
return i+j+k;
}
public double getSum(double i, double j){ // 매개변수 타입이 다른 경우
return i+j;
}
}
getSum 메소드가 각각 매개변수 개수와 타입이 다르게 오버로딩 하고 있다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[JAVA] JDK 설치 및 환경변수 설정 (0) 2019.12.16 [JAVA] length, length(), size() (0) 2019.08.08 [JAVA] 추상 클래스와 인터페이스 비교 (0) 2019.07.01 [JAVA] Scanner를 이용하여 char 입력받기 (0) 2019.06.26 [JAVA] Float, Double형 소수점 자리수 정하기 (2) 2019.06.26