(기초)그래서 뭘 배운거야?/Java

JV-90-Overriding과 Overloading

Soheny.P 2022. 3. 23. 16:05
728x90
overriding은 이미 한 번 했었다.
부모가 가진 변수, 기능을 자식에서도 사용할 수 있도록 상속하는 것
그리고 자식이 상속받은 것을 재정의해서 사용하는 것
그럼 overloading은 뭐고?


 

Overloading
  • 기존에 없던 메소드를 새로 정의하는 것
Overriding
  • 기존에 있는 메서드를 상속받아서 내용을 재정의하는 것
  • 자식클래스에서 부모 클래스에 정의된 기능을 같은 이름으로 선언해 덮어씌우는 것을 말함
  • 메모리에서 그 기능 검색시 자식 쪽에서 호출을 가로채, 부모 클래스 기능 검색 막는 매커니즘
  • 강제로 부모 클래스 기능 접근하고 싶다면, super.method명() 이용해 부모 객체에 접근 가능

 

정의만 보면 뭐라는겨..?
Overloading이라고 굳이 부를 필요가 있는건가?
새로 그냥 메소드 만들었슴다 하면 되는걸 왜 overloading이라는 명명을 하는 걸까..?
라고 생각했는데,
여기서 그렇게 생각할 만한 이유를 덧붙여서 적어보자

 

 

e.g
//부모 클래스
class parent {
	void parentMethod(){}
}

//자식 클래스
class child {
	void parentMethod(){} //Overriding
    void parentMethid(String i){} //Overloading
}

즉, 메소드 이름은 같은데, 메소드의 매개변수 갯수가 다르다면 그것은 새로운 메소드라고 보는 것이다~

  • 같은 메서드 이름하에 매개변수만 달리 선언하는 기능
  • 자바에서 많이 사용되기도 하는 문법
  • 메서드를 오버로드 하기 위해 매개변수의 갯수, 타입이 달라야함
  • 매개변수 갯수, 타입이 같고, 매개변수 이름이 다르다고 해서 오버로드 성립 안됨 (즉, 타입이 같으면 안됨)
  • 기능에 대한 매개변수 분산할 수 있는 장점 有

 

728x90