📄 학습내용
생성자
- 생성자 : 인스턴스를 생성할 때 호출되는 인스턴스 변수를 초기화하는 메서드
- 조건
- 클래스명과 동일한 이름을 가져야함
- return이 없음
- 제어자는 반드시 public으로 선언되어야 함
- 메소드와 마찬가지로 생성자도 오버로딩 가능
- 기본 생성자와 매개변수가 있는 생성자
- 기본 생성자 : 매개변수가 없는 생성자로, 클래스 내에 생성자가 없는 경우에는 자바 컴파일러가 자동으로 추가해줌
- 매개변수가 있는 생성자 : 매개변수를 받아서 객체 초기화에 사용됨
- 매개변수가 없는 생성자 : 매개변수 없이 객체를 초기화함
// 기본 생성자 - 자바 컴파일러가 자동으로 추가
생성자명 () {}
// 매개 변수가 있는 생성자
생성자명(매개변수) {
...
}
// 매개 변수가 없느 생성자
생성자명() {
....
}
- this와 this()
- this : 객체 자기 자신을 가리키는 참조변수로, 이를 통해서 객체 자신의 변수 & 메서드에 접근 가능
- 멤버 변수와 지역 변수를 구분하기 위해서 사용
- 메서드 내에서 다른 메서드를 사용 → 메서드 앞에 this.를 생략해도 컴파일러가 추가해줌
- 생성자와 인스턴스 메소드에서 this 사용 가능, 클래스 메소드에서는 this 사용 불가능
- this() : 클래스 내에 선언된 메소드를 객체 선언 없이 호출할 수 있듯이 클래스 내에서 선언된 다른 생성자를 호출하는데 사용하는 메소드
- 조건 : 생상자 내부의 첫번째 줄에서만 사용 가능
- this : 자기 자신의 객체, this() 메서드 : 자신의 생성자 호출
- this : 객체 자기 자신을 가리키는 참조변수로, 이를 통해서 객체 자신의 변수 & 메서드에 접근 가능
// 생성자 예시
class Example {
int num = 10; // 멤버 변수
// 기본 생성자
public Example() {}
// 매개변수가 있는 생성자1
public Example(int num) {
this.num = num;
// this.num = Exmample 멤버 변수
// num = 지역 변수
System.out.println("매개변수가 1개 있는 생성자");
}
// 매개변수가 있는 생성자2
public Example(int num, String str) {
this(num); // 매개변수가 있는 생성자1 호출
System.out.println("매개변수가 2개 있는 생성자");
}
}
내부 클래스
- 내부 클래스란?
- 클래스 내부에 선언된 클래스
- 장점
- 코드의 복잡성을 줄일 수 있음
- 외부 클래스의 멤버들에게 쉽게 접근 가능
- 캡슐화
- 종류
- 인스턴스 내부 클래스
- 외부 클래스 선언 및 초기화 후 사용 가능
- 클래스 앞에 static 선언 X
- 정적 내부 클래스
- 외부 클래스 선언 없이 독립적으로 선언해서 사용 가능
- 클래스 앞에 static 선언
- 사용방법 : 외부클래스.정적_내부클래스 = new 생성자();
- 지역 내부 클래스
- 클래스 내의 메소드 내부에서만 사용 가능
- 선언 후 바로 객체를 생성해서 사용
- 익명 내부 클래스
- 클래스 선언과 객체 생성을 동시에 하는 일회용 익명 클래스
- 인스턴스 내부 클래스
[Optional 심화 실습] 텍스트 스트크래프트 프로그램
https://github.com/kung036/be-sprint-lol_program
⭐ 공부 난이도
생성자 & 내부 클래스 ☆☆☆★★
멤버란 무엇인가?
내부 클래스의 종류는? 어떤 변수를 사용가능하고 선언가능한가?
🌕 느낀점
순간적으로 멤버가 무엇인지 잘모르겠다는 생각이 들었어서 검색을 해보았지만 명확하게 이해되는 개념은 찾지 못해서 아직도 개념이 모호하다. 멤버는 왜 객체와 클래스 사이에서 왔다갔다하면서 사용되는지 잘 모르겠다. 지난주에 이해하기를 객체에 포함된 개념이 멤버로 이해했고, 클래스는 필드, 메서드, 생성자, 이너 클래스로 구성되어 있다고 이해를 했다. 뭔가 점점 복잡하게 가니까 잘 모르겠다.
'코드스테이츠 - 3회차 백엔드 부트캠프 > Section 1' 카테고리의 다른 글
2022.09.07 수 - 다형성, 추상화 (0) | 2022.09.07 |
---|---|
2022.09.06 화 - 상속, 캡슐화 (0) | 2022.09.06 |
2022.09.02 금 - 클래스와 객체 (0) | 2022.09.02 |
2022.09.01 목 - 배열 (0) | 2022.09.01 |
2022.08.31 수 - 제어문 (0) | 2022.08.31 |