비슷한 이름 때문인지 공부해놓고 시간이 지나면 항상 헷갈리는 그 개념
바로 오버라이딩과 오버로딩에 대해 정리해놓을까 한다.
오버로딩이란?
자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있어도
매개변수의 개수 또는 타입이 다르면 같은 이름을 사용해 메소드를 정의할 수 있는 것이다.
오버로딩의 경우 리턴타입이나 접근 지정자는 영향을 주지 않는다.
즉 이름이 같더라도 매개 변수만 다르다면 같은 이름의 함수를 사용하더라도 정상 작동한다는 것이다.
오버라이딩이란?
부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것으로
쉽게 말하면 덮어쓰기라고 생각하면 된다 :)
그러나 오버로딩과 다르게 오버라이딩의 경우 메소드의 이름, 매개변수, 리턴타입이 모두 같아야 한다.
유의해야 할 점
1. 자식 클래스에서 오버라이딩하는 메소드의 접근 지정자는 부모 클래스보다 넓거나 같은 범위를 가져야 한다.
2. static , private , final을 성질을 가진 메소드의 경우 오버라이딩이 불가능하다.
3. 예외 선언은 부모 클래스보다 많이 할 수 없다.
추가 개념
1. @override
-> 이는 어노테이션으로 주석 역할을 하나 우리가 코드에 대한 설명이나 메모할 것을 적어놓는 주석과는 다른 역할을 하는데
내가 작성한 오버라이딩함수가 정확한지 컴파일러가 검사하도록 한다.
2. 메소드를 호출 시에 무조건 자식 클래스의 함수가 호출이 된다.
만약 부모 클래스의 메소드를 불러오고 싶다면 super.메소드명(); 을 통해 불러올 수 있다.
해야 할 일
- 예제 코드 작성해서 올리기
'Java' 카테고리의 다른 글
[ Java ] 1차원, 2차원 배열 복사 - 깊은 복사와 얕은 복사 (1) | 2024.02.08 |
---|---|
[ Java ] int을 String으로, String을 int로 바꾸기 (0) | 2024.01.30 |
[ JAVA ] Queue 클래스 (0) | 2023.11.06 |
[JAVA] ArrayList와 ArrayList 배열 (비정형 배열) (0) | 2023.11.04 |
Java - 입력에서 문자(char) 하나 받아오기 (0) | 2022.09.05 |