본문 바로가기

Java

overriding, overloading 차이점

다형성: 사용편의성

객체 지향에서 다형성이라고 하면 오버라이딩, 오버로딩 이라고 할 수 있다. 물론 상위 클래스와 하위 클래스 사이에서도 다형성을 이야기할 수 있고, 인터페이스와 그것의 구현 클래스 사이에서도 다형성을 이야기할 수 있지만 가장 기본은 오버라이딩과 오버로딩이라고 할 수 있다. 

 

오버라이딩? 오버로딩?

오버라이딩 : 같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 메서드를 재정의

오버로딩 : 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의

 

ride : 올라타다 -> 상위 클래스의 메서드를 올라타다?

load : 적재하다 -> 다수의 메서드를 나란히 옆으로 적재한다?

 

public class Animal{
	public String name;
    
    public void showName(){
    	System.out.println("안녕 나는 %s야. 반갑다\n", name);
    }

}

public class Penguin extends Animal{
	public String habitat;
    
    public void showHabitat(){
    	Sytem.out.println("%s는 %s에 살아",name, habitat);
    }
    
    //오버라이딩 -재정의 : 상위클래스의 메서드와 같은 이름의 메서드 이름, 같은 인자 리스트
    public void showName(){
    	System.out.println("어머 내 이름은 알아서 뭐하계?");
    }
    
    //오버로딩 -중복정의 : 같은 메서드 이름, 다른 인자 리스트
    public void showName(String urName){
    	System.out.println("%s 안녕, 나는 %s라고 한다.\n", urName, name);
    }

}

 

정리

Java의 다형성을 이야기할 때 늘 나오는 키워드 오버로딩과 오버라이딩의 차이를 알아보았다. 사실 이름만 비슷하지 내용은 다르다. 공통점은 같은 메서드의 이름을 사용한다는 점밖에 없다. 오버라이딩은 상위 클래스의 메서드와 같은 이름의 메서드 이름, 같은 인자 리스트를 받아서 재정의 하는 것, 오버로딩은 같은 메서드 이름, 다른 인자 리스트 로 다수의 메서드를 중복 정의 하는 것이다. 

 

출처

  • 스프링 입문을 위한 자바 객체 지향의 원리와 이해 

'Java' 카테고리의 다른 글

자바 스레드 기초  (0) 2019.06.21
제네릭  (0) 2019.06.03
StringBuffer, StringBuilder 비교  (0) 2019.05.29
스프링 입문을 위한 자바 객체 지향의 원리와 이해 -1장  (0) 2019.05.28
TechStudty -03 HTTP 프로토콜이란?  (0) 2019.03.11