❯ 생성자(Constructor)
생성자는 객체를 생성하는 역할을 하는 클래스의 구성요소로, 인스턴스가 생성될 때 호출되는 메서드.
인스턴스를 생성하는것은 new 키워드이고, 생성자는 인스턴스 변수를 초기화하는데 사용됨
<생성자의 특징>
생성자의 이름은 반드시 클래스의 이름과 같아야 함
생성자는 리턴 타입이 없음 (리턴 타입 자체가 존재하지 않으므로 void 키워드 사용안함)
생성자도 메서드와 같이 오버로딩이 가능함. 한 클래스 내에 여러개의 생성자 존재 가능
기본생성자(Default Constructor)
만약 인스턴스를 만들 때 생성자가 클래스 안에 없다면 자바 컴파일러가 자동으로 기본 생성자를 추가함
ex. class Example ⇒ Example( ){ } 자동으로 생성
생성자가 클래스 안에 추가되어있다면 해당 생성자를 사용하게됨
매개변수가 있는 생성자
매개변수가 있는 생성자를 사용하면 인스턴스를 생성하면서 동시에 초기화를 수행할 수 있음
ex. class Example ⇒ Example(String name, String age){ ... }
❯ this() 와 this
this()
자신이 속한 클래스에서 다른 생성자를 호출하는경우에 사용함 (생성자 여러개일때)
<성립조건>
this() 메서드는 반드시 생성자 내부에서만 사용할 수 있음
this() 메서드는 반드시 생성자 첫줄에 위치해야함
class Example {
public Example() {
System.out.println("Example의 기본 생성자 호출");
};
public Example(int x) {
this();
System.out.println("Example의 두 번째 생성자 호출");
}
}
// 두번째 생성자를 사용하면 첫번째 생성자 호출 후 다음 동작이 수행된다.
this
만약 생성자에 매개변수가 있을때, 생성자의 매개변수명과 인스턴스의 매개변수명이 같아서 구분이 어려워지는 경우가 발생함
이를 구분하기 위해 사용하는 것이 this 임. this는 인스턴스 자신을 가리킴.
ex. this.example = example 처럼 인스턴스 매개변수와 생성자의 매개변수를 구분해주는 역할을 함
❯ 내부 클래스(Inner class)
클래스 내에 선언된 클래스로, 외부 클래스와 내부 클래스가 연관되어있을 때 사용함
내부 클래스를 사용할 경우 외부 클래스 멤버에 쉽게 접근할 수 있고 코드 복잡성을 감소시킴
멤버 내부 클래스(인스턴스 내부 클래스, 정적 내부 클래스)와 지역 내부 클래스로 구분됨
멤버 내부 클래스
인스턴스 내부 클래스와 정적 내부 클래스를 묶어서 멤버 내부 클래스라고 명명함
외부 클래스의 멤버변수 선언위치에 선언함
인스턴스 내부 클래스: 외부 인스턴스 변수, 외부 전역 변수 사용 가능 ⇒ 외부 클래스 생성 이후 사용 가능
정적 내부 클래스: 외부 전역 변수 사용 가능 ⇒ 외부 클래스 생성 유무와 무관하게 사용 가능
지역 내부 클래스
메서드 내에서 정의되는 클래스를 의미함
메서드 안에서 선언 후 바로 객체를 생성해서 사용함
외부 인스턴스 변수, 외부 전역 변수 사용 가능
벌써 2주라는 시간이 훌쩍 지나갔다. 특히 이번주는 이론 내용을 많이 다루는바람에 이해해야할것들이 많았다.
위 내용에는 기재하지 않았지만 코드를 직접 작성해보면서 동작하는 원리를 파악하는것이 중요했다.
'부트캠프 개발일기 > Java' 카테고리의 다른 글
12일차: 객체지향 프로그래밍 심화(다형성/Polymorphism, 추상화/Abstraction) (0) | 2023.02.28 |
---|---|
11일차: 객체지향 프로그래밍 심화(상속/Inheritance, 캡슐화/Encapsulation) (0) | 2023.02.27 |
9일차: 객체지향 프로그래밍 기초(Class, Field, Method) (0) | 2023.02.23 |
8일차: Java 기초(배열) (0) | 2023.02.22 |
7일차: Java 기초(반복문/for, while, do-while) (0) | 2023.02.21 |