오버로딩과 오버라이딩

momomoki·2023년 10월 18일
0
post-thumbnail

오버로딩이란?

오버로딩(overloading)을 번역하면 과적(過積)이란 단어가 나온다. 과적이란 쉽게 설명하면 화물트럭에 물건을 초과하며 쌓는것을 말한다. 그럼 오버로딩은 무언가를 쌓는것인가??라는 생각이 들꺼다. 그럼 코딩에서의 오버로딩은 무엇인지 코드를 보면서 생각해 보겠습니다.!

위 코드에서 먼저 볼것은 클래스 aaa안에 코드를 볼껀데 일단 먼저 하나 알고갈게 있습니다. class가 만약 한 파일에 여러개가 존재한다면 public을 붙일수있는 class는 오직 하나뿐이다. 그럼 다시 클래스 aaa를 보겠습니다. aaa안에 메소드들을 보면 over라는 메소드가 여러개가 선언이 되어있는데 옆에 매개변수의 차이만 있지 메소드의 이름은 같다. 그럼 어떤 aaa클래스 안에 어떤 오버를 쓸지 알 수 있나?라고 생각할 수 있지만 이게 오버로딩을 알면 이해할 수가 있게 됩니다. 그럼 먼저 Overloading클래스를 실행한 것을 보자.

콘솔 창을 보면 over라는 메소드가 구분되어서 콘솔창에 나왔다? 왜? 오버로딩은 메소드의 매개변수 갯수와 타입을 구분하여 메소드를 찾아간다. 만약 매개변수가 같고 타입도 각각 같다면 실행이 안되며 둘 중 하나라도 달라야 실행이 됩니다.
오버로딩을 공부하면서 느낀점은 재사용면에서 정말 유용하겠다라는 생각을 했습니다. 만얀 오버로딩이 안된다면 같은 코드를 엄청많이 만들어야하고 계속 다른 메소드이름을 만들어야한다는 힘든 작업을 해야합니다.

오버라이딩

오버라이딩(overriding)이란 일단 사전에 검색을 해보자.
다른 무엇보다 더 중요한, 최우선시 되는 이라는 뜻을 가졌다. 근데 솔직히 오버라이딩이 무슨 뜻인지는 아직 감이 안온다. 그럼 코드를 보고 오면 이해를 할 수 있겠죠??
클래스 Over1, Over2, Over3 각각 선언을 했습니다. 그리고 다른 점은 extends라는게 붙어있는데 이건 상속을 뜻하며 상속을 했다는 것은 extends 뒤에 오는 클래스의 메소드를 사용할 수 있다. 근데 오버라이딩은 상속받은 클래스의 메소드를 재할당 간단하게 말해 내가 쓰고싶은데로 메소드 안에 내용을 바꿀수가있다. 일단 콘솔에 어떤식으로 찍히는지 보자.
일단 한가지 알려드릴게요. println으로 바꿨습니다.
콘솔을 보면 오버라이딩은 그냥 재할당이 가능하다. 근데 조건은 상속을 받았을때 라는 조건이 붙는다.
그렇다면 상속이 가능할때 오버라이딩을 사용하면 내가 사용을 자유롭게 메소드의 내용을 바꿔가면서 재사용을 할 수 있다는 장점을 가진다. 그럼 오버라이딩의 대해 간단하게 알아 봤는데 오버라이딩의 뜻인 다른 무엇보다 더 중요한, 최우선시 되는 이거랑 연관이 있나?라는 생각을 하게된다.
저 뜻으로 이해를 한다면 상속을 받은 순간 받은 메소드가 가장 우선시 되어서 재할당도 가능하게 된 것인가? 라는 생각을 하게된다. 아직 오버로딩과 오버라이딩에 대해서 자세히는 모르겠지만 공부를 하면서 좀 더 정확한 개념을 가져야겠습니다.

profile
얍얍엽엽욥욥

0개의 댓글