일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디코딩
- 자바
- 노드
- 클래스
- final 클래스
- 기본 생성자
- 화살표 함수
- 어노테이션
- Override
- 자바의 특징
- final
- 유니코드
- import
- annotation
- router
- Super
- 라우터
- Anonymous Functions
- 객체지향 #객체지향 특징
- 문자집합
- 패키지
- 즉시 실행 함수
- Arrow function
- final 메소드
- 인코딩
- node
- 메소드 재정의
- 생성자
- 익명함수
- package
- Today
- Total
개인 공부 블로그
생성자 본문
- 객체를 생성할 때 호출되어 객체의 초기화를 담당한다.
- 생성자를 실행시키지 않고는 클래스로부터 객체를 만들 수 없다.
기본 생성자
- 모든 클래스는 생성자가 반드시 존재, 하나 이상을 가질 수 있음.
- 기본 생성자는 생략 가능.
클래스 내부에 생성자 선언을 생략하면 컴파일러가 기본 생성자를 바이트 코드에 자동으로 추가시킨다.
- 그러나 클래스에 명시적으로 선언한 생성자가 한 개라도 있으면 컴파일러는 기본 생성자를 추가하지 않는다.
- 필드가 객체 생성 시점에서 외부에서 제공되는 값으로 초기화되어야 한다면 생성자에서 초기화를 해야한다.
this
생성자의 매개변수는 관례적으로 필드와 동일한 이름으로 사용. 이 경우 동일한 이름의 매개변수가 사용 우선순위가 높기 때문에 생성자 내부에서 해당 필드에 접근할 수 없음.
해결방법은 필드 엎에 "this."을 붙이면 된다.
public Person(String name, int age){
this.name = name;
this.age = age;
}
this는 객제 자신의 참조. 우리 자신을 "나"라고 하듯이 객체가 객체 자신을 this라고 한다.
"this.필드"는 this라는 참조 변수로 필드를 사용하는 것과 동일하다.
생성자 오버로딩(Overloading)
매개변수를 달리하는 생성자를 여러개 선언하는 것.
외부에서 제공되는 다양한 데이터를 이용해 객체를 초기화 하려면 생성자도 다양화될 필요가 있다. 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩을 제공.
다른 생성자 호출 (this())
생성자 오버로딩이 많아질 경우 생성자 간 중복 코드가 발생할 수 있다.
매개변수의 수만 다르게 하고 필드 초기화 내용이 비슷한 생성자에서 많이 발생 가능. 이 경우에는 필드 초기화 내용은 한 생성자에만 집중적으로 하고 나머지 생성자는 호출하는 방법으로 개선 가능.
클래스( [매개변수 선언, ...]){
this(매개변수1, ...); // 클래스의 다른 생성자 호출
실행문;
}
this()는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫줄에서만 허용됨.
'JAVA' 카테고리의 다른 글
정적 멤버와 static (0) | 2023.09.18 |
---|---|
인스턴스 멤버와 this (0) | 2023.09.16 |
클래스 (0) | 2023.09.16 |
객체지향 프로그래밍의 특징 (0) | 2023.09.16 |
배열 (0) | 2023.09.16 |