자바의 정석 책과 안드로이드 앱스쿨에서 공부한 내용을 정리한 내용입니다.
한 클래스 내에 같은 이름의 메서드를 매개변수의 개수 또는 타입으로 구분해 여러 개를 정의하는 것이다.자바를 공부를 하다보면 오버로딩
을 공부를 하고 그 뒤에 상속을 배우면서 오버라이딩
이 나오는데 이름이 비슷해 헷갈릴 수도 있다. 사전적인 뜻을 보면 오버로딩
은 과중한 짐, 과적, 과부하 즉 많이 싣는 것을 의미한다. 자바에서는 같은 이름의 생성자 또는 메서드를 여러 개 선언하는 것을 말하고 오버라이딩
은 1. 기각하다2. …보다 더 중요하다3. 중단시키다 이런 의미르 가지고 있다는데 IT지식백과에서는 치환하다로 나오는데 저는 이 의미가 기각하다 이런 뜻보다 맞는 의미 같아요..
오버로딩과 오버라이딩을 찾다가 딱 맞는 사진을 찾은 것 같아 가져와 봤습니다!
이 사진에 보여지는 대로 오버로딩
에서 화살이 메서드라고 치면 화살이 첫 번째 화살은 불 속성을 가지고 있는 화살, 두 번째 화살은 물 속성, 세 번째는 풀 속성을 가지고 있는 화살을 날릴 수 있다.
오버라이딩
은 부모클래스에서 이미 정의된 메서드를 자식클래스에서 상속을 받아 자식 클래스에서 재정의하는 것을 의미하는데 위에 사진 처럼 기존의 부모 클래스에서의 화살은 그냥 평타만 칠 수가 있다면 자식 클래스에서 속성을 부여할 수 있고 속성이 부여하면서 데미지가 증가할 수 있게 재정의를 하는 것이다. 오버라이딩은 나중에 상속을 정리하면서 다시 정리를 하겠습니다.
다시 오버로딩
애기로 넘어와서 왜 오버로딩이 왜 좋은가
정리를 하자면
여러 메서드들이 하나의 이름으로 정의 될 수 있다.예를 들어 println
이 있는데 println
은 타입에 따라 char도 받을 수 있고 int도 받을 수 있다. 만일 오버로딩이 없었다면 printChar,printInt 이런식으로 메서드들의 이름을 지어야 하는데 기억해야할 메서드의 양이 많아져 부담이 느껴질 수 있다.이러한 부담을 오버로딩을 통해 println() 만 기억해 매개변수를 통해 아 char을 넣으면 char에 대한 println()이 동작 하구나 할 수 있게 된다.