[JAVA] 생성자, this, 오버로딩, 메소드
<오늘 배운 것>
1. 생성자
2. this
3. 오버로딩
4. 메소드
<생성자 (Constructor)>
1) 생성자란?
- 객체가 new 연산자를 통해 Heap 메모리 영역에 할당될 때
객체 안에서 만들어지는 필드 초기화 + 생성 시 필요한 기능 수행
- 생성자는 일종의 메소드로 전달된 초기값을 받아서 객체의 필드에 기록
2) 생성자 규칙
- 생성자의 선언은 메소드 선언과 유사하나 반환 값이 없으며
생성자명을 클래스명과 똑같이 지정해주어야 함
3) 생성자 표현식
- [접근제한자] [예약어] class 클래스명 {
[접근제한자] 클래스명() {}
[접근제한자] 클래스명(매개변수) { (this.) 필드명 = 매개변수; }
4) 기본 생성자
- 작성하지 않은 경우, 클래스 사용 시 컴파일러가 자동으로 기본 생성자 생성
5) 매개변수 생성자
- 객체 생성 시 전달받은 값으로 객체를 초기화 하기 위해 사용
- 매개변수 생성자 작성 시 컴파일러가 기본 생성자를 자동으로 생성해주지 않음
- 상속에서 사용 시 반드시 기본 생성자를 작성
- 오버로딩을 이용하여 작성
<this>
1) this란?
- 모든 인스턴스의 메소드에 숨겨진 채 존재하는 레퍼런스로, 할당된 객체를 가리킴
(모든 객체에 숨겨져 있는 참조 변수)
- 함수 실행 시 전달되는 객체의 주소를 자동으로 받음
<오버로딩> Over : 초과, 넘어서다 Loading : 적재
- 한 이름당 기능 1개 -> (오버로딩 적용)
1) 오버로딩이란?
- 한 클래스 내에 동일한 이름의 메소드를 여러 개 작성하는 기법
2) 오버로딩 조건
- 같은 메소드 이름
- 다른 매개변수의 개수 또는 다른 매개변수 타입, 순서
<메소드 (Method)>
1) 메소드란?
- 수학의 함수와 비슷하며 호출을 통해 사용, 전달 값이 없는 상태로 호출을 하거나
어떤 값을 전달하여 호출을 하며, 함수 내에 작성된 연산 수행
수행 후 반환 값 . 결과 값은 있거나 없을 수 있음
2) 메소드 접근제한자
- private : 동일한 클래스 안에서만 접근이 가능하고, this를 사용하는 것들은 외부에서 접근 불가능하고, 상속도 안된다.
- default : 접근제어자가 없는 형태로 동일한 패키지 안에서만 접근이 가능하다.
- protected : 동일한 패키지 안에서 사용가능하고, 다른 패키지라도 상속받은 클래스에는 접근이 가능하다.
- public : 모든 객체에서 접근 가능하다.
3) 메소드 예약어
4) 메소드 반환형
5) 메소드 매개변수
6) getter와 setter 메소드
- setter 메소드 : 필드에 변경할 값을 전달 받아서 필드 값을 변경하는 메소드
- getter 메소드 : 필드에 기록된 값을 읽어서 요청한 쪽으로 읽은 값을 넘기는 메소드
7) return
- 해당 메소드를 종료하고 자신을 호출한 메소드로 돌아가는 예약어
- 반환 값이 있다면 반환 값을 가지고 자신을 호출한 메소드로 돌아감