메서드 오버로딩과 오버라이딩은 모두 자바의 다형성을 구현하는 방법이다. 게다가 이름과 구현과정까지 나름 비슷해서 가끔 헷갈릴 때가 있는데, 오늘도 헷갈린 김에 잊지 않으려 정리를 한다. Method Overloading 가장 먼저 짚고 넘어가야 할 오버로딩과 오버라이딩의 근본적인 차이는 두 행위가 구현되는 타이밍이다. 오버로딩의 경우 컴파일 과정에서 구현되며, 오버라이딩은 실행시, 혹은 런타임으로 구현된다. 계속해서 오버로딩은 같은 클래스 안에서 두 개 이상의 같은 이름을 가진 메서드를 정의하는 것을 가리키며, 여기엔 아래와 같은 몇 가지 규칙이 존재한다. 메서드 이름이 같아야 한다. 리턴 타입과 예외처리는 같아도 되고 달라도 된다. 파라미터의 개수가 다르거나, 같다면 타입이 달라야 한다. 즉, 시그니처..
생성자 글에서도 적었지만, 부모 클래스가 기본 생성자를 가지고 있지 않으면 자녀 클래스의 생성자는 반드시 부모의 매개변수가 있는 생성자를 첫 줄에 호출해야 하며, 그렇지 않을 경우 컴파일 오류가 발생한다. 사실 부모가 기본 생성자를 가지고 있는 경우에도 자녀 클래스 생성자에서 호출해주어야 하는 건 같지만 이 경우에는 컴파일러가 알아서 추가해주기 때문에 명시적으로 할 필요가 없을 뿐이다. 왜 이런 귀찮은 작업을 수행해야 하는 걸까? 정답부터 말하자면 상속을 위해선 부모 클래스가 자녀 클래스보다 먼저 존재해야 하기 때문이다. 상속받은 클래스 멤버는 기본적으롤 부모 클래스에 속한 것이므로 부모가 먼저 존재하지 않으면 자녀 클래스에서 호출해 사용하는 것이 불가능하다. 따라서 반드시 자녀 클래스보다 부모 클래스가..
자바에서 생성자는 클래스의 네 가지 구성요소(필드, 메서드, 생성자, 내부 클래스)중 하나이며 메서드와 비슷한 코드 블럭, 혹은 특별한 메서드이다. 위 문장은 메서드를 어떻게 정의하느냐에 따라 달라지는 미묘한 의미를 가졌지만, 어쨌거나 중요한 것은 생성자 역시 메서드, 혹은 그에 준하는 코드 블럭이라는 것이다. 생성자는 매개변수의 유무에 따라 기본 생성자(Default or no-arg Constructor) - 매개변수가 없는 생성자 매개변수가 있는 생성자(Parameterized Constructor) 로 나뉘며 일반적인 메서드와는 다른 생성자만의 특징은 아래와 같은 것들이 있다. 클래스의 멤버(Member)가 아니므로 상속 및 오버 라이딩의 대상이 되지 않는다. 생성자의 이름은 반드시 클래스의 이름..
Class 클래스는 객체 자체가 아닌 객체를 생성하기 위한 틀이자 설계도이다. 기본적으로 class 키워드를 이용해 아래와 같이 정의하며, public class Car{ int doors = 4; // (1)필드 void stop {...} // (2)메서드 Car {...} // (3)생성자 class Car2 {...} // (4)내부 클래스 } 필드, 메서드, 생성자, 내부 클래스의 구성요소 중 생성자를 제외한 세 가지를 클래스(혹은 생성된 객체)의 멤버라 부른다. 각 구성요소의 특징은 아래와 같다. 필드 - 클래스(객체)의 속성을 나타내는 변수. 차의 모델명, 색깔, 문의 개수 등이 있다. 메서드 - 클래스(객체)의 기능을 나타내는 함수. 가속하기, 멈추기 등이 있다. 생성자 - 클래스의 객체를..
목차 Summary 기본형과 참조형 데이터 타입의 차이에 대해서만 선 요약하고 들어간다. 요약 이후의 글은 둘의 차이 뿐 아니라 각각의 특성에 대해서도 조금 더 다루고 있다. Primitive Variables Reference Variables 개수 8 무제한(기본형을 제외한 전부) 크기 1, 2, 4, 8byte(타입마다 다름) 4, 8byte(JVM에 따라 다름) 저장 데이터 데이터 값 데이터의 주소값 데이터 저장 위치 Call Stack Heap 산술연산 가능 불가능 null 값 불가능 가능 비교 연산자 == equals() Primitive Variables 자바는 아래의 8가지 기본형 타입을 제공한다. 타입 할당되는 메모리 크기 기본값 표현 범위 논리형 boolean 1 byte false t..
- Total
- Today
- Yesterday
- RX100M5
- 여행
- 자바
- a6000
- 리스트
- 맛집
- 면접 준비
- 중남미
- 파이썬
- 지지
- 기술면접
- spring
- 스프링
- 유럽여행
- 백준
- 야경
- java
- 칼이사
- Python
- 유럽
- 알고리즘
- 스트림
- 남미
- 세계일주
- BOJ
- 동적계획법
- 세계여행
- Backjoon
- 세모
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |