Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 경력기술
- 동네도서관이용후기
- 사이드프로젝트
- LinkedList
- 특정값 개수
- 무료로책보기
- goormIDE
- @action
- 도서관대출
- 오류잡기
- 월간코드챌린지시즌1
- level1
- 코딩문제풀이
- 강서구도서관
- @observable
- 수포자
- 해쉬맵
- 전자도서관
- HashMap
- 1일1커밋
- MES
- Decorator
- 로봇 관련 윤리문제
- 프로그래머스
- SpringBoot
- 코딩문제
- groomide
- mobx
- restapi
- java
Archives
- Today
- Total
Maenya's Techlog
[20210318 JAVA문법] 오버로딩과 오버라이딩의 차이 본문
오랜만에 나의 최애 기술블로그들을 둘러보다가 자바문법 게시물들에 눈이 갔다.
그 중에 이해하기 쉽게 오버로딩과 오버라이딩의 차이가 설명되어 있었는데
평소 명확하게 잡혀있지 않던 개념이라 꼼꼼히 읽고 다른 자료까지 찾아가며 나도 한번 정리를 해봤다.
♡
오버로딩 (Overloading)
이름은 같지만 아예 다른 함수
class Overloading{
public void same(int param){
System.out.println("입력된 숫자 : " + param);
}
public void same(String param){
System.out.println("입력된 문자 : " + param);
}
}
public class OverloadingDemo {
public static void main(String[] args) {
Overloading o = new Overloading();
o.same(1); // int형으로 입력
o.same("one"); // string형으로 입력
}
}
Overloading이라는 클래스에 same이라는 함수 2개를 만들었는데
파라미터 형식이 int와 string으로 이름만 같고 둘은 아예 다른 함수이다.
메소드의 이름, 매개변수의 데이터 타입(+그의 순서), 메소드 리턴 타입
이 3가지가 모두 동일해야만 같은 함수로 인식된다.
♡
오버라이딩 (Overriding)
부모에게 물려받아 변형한 함수
상속의 개념이 깔려 있고 '다형성' (객체지향 특)
두 개의 함수가 같은 함수이지만 하나의 함수는 변형되어 우선 순위를 갖는다.
// 부모 클래스
class Calculator {
public void sum(int left, int right) {
System.out.println(left + right);
}
}
// 자식 클래스
class OverridingCalculator extends Calculator {
public void sum(int left, int right) {
System.out.println(left + right + "입니다.");
}
}
// 실행
public class Demo {
public static void main(String[] args) {
OverridingCalculator c1 = new OverridingCalculator(); // 자식 인스턴스 생성
c1.sum(10,20); // 결과 : "30입니다."
}
}
하나의 클래스가 다른 하나의 클래스를 상속받는 경우,
둘다 같은 함수를 각각 가지고 있을때
이 시점에서는 상속받은 자식클래스의 함수가
더 높은 우선순위를 차지한다.
결국 자식클래스가 부모클래스의 객체를 변형하는것,
그렇게 우선순위를 차지하는 것을 의미한다.
마무리
실무하면서는 솔직히 너무 당연하고 기초적인 부분이라 할지라도 막상 질문을 받으면
그에 대해 유창하게 답변하기 힘든 것 같다.
그래서 꼭 새로 알게 된 개념 말고도
기초적인 개념이나, 애매하게 기억하고 있는 문법들에 대해서도
다시 공부하고 이렇게 기록할 필요가 있는 것 같다.
앞으로 더욱 깊게 학습하고 더 많은 기록들을 남기려고 노력해야겠다.
'프로그래밍 > Java | Spring' 카테고리의 다른 글
| [20210319] spring boot 프로젝트 실행 (0) | 2021.03.19 |
|---|---|
| [20210319] 이번에 알고리즘 연습용 Spring 프로젝트 새로 생성했다 (구름IDE 에서 git연결 + Spring 프로젝트 생성) (0) | 2021.03.19 |
| [20210223 JAVA] myBatis와 iBatis의 차이 (0) | 2021.02.23 |
| [20210218 JAVA문법] BigDecimal (추가중..) (0) | 2021.02.18 |
| [20201229] 구름IDE 사용기 그 두번째, git 연동하기! (0) | 2020.12.29 |