1.생성자(Constructor) : 객체를 생성하는 역할을 하는 클래스의 구성 요소로 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드
생성자는 메서드와 비슷한 구조지만 두 가지 차이가 있음
(1)생성자의 이름은 반드시 클래스의 이름과 같아야 함.
(2)생성자는 리턴 타입이 없음.
*무언가를 ‘리턴하지 않는다’를 의미하는 void와는 다르게 생성자는 아예 리턴 타입 자체가 존재하지 않기 때문에 void키워드를 사용하지 않음
생성자 기본 구조 예시
클래스명(매개변수) {
...생략...
}
1-1.기본 생성자(Default Constructor) = 매개변수가 없는 생성자
*모든 클래스에는 반드시 하나 이상의 생성자가 존재해야 함.
*만약 생성자가 클래스 안에 포함되어 있지 않은 경우에는 자바 컴파일러가 기본 생성자를 자동으로 추가
클래스명(){} //기본 생성자
DefaultConst(){} // 예시) DefaultConst 클래스의 기본 생성자
위의 예시처럼 컴파일러가 자동으로 추가해주는 기본 생성자에는 매개변수도 없고 바디에 아무런 내용이 없음.
1-2.매개변수가 있는 생성자
*메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화하는 데 사용됨.
1-3. this() 와 this 의 차이
(1)this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용
-this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있음.
-this() 메서드는 반드시 생성자의 첫 줄에 위치해야 함.
(2)this 메서드는 인스턴스 자신을 가리키며, this를 통해서 인스턴스 자신의 변수에 접근할 수 있음.
*참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것과 비슷
*주로 인스턴스의 필드명과 지역변수를 구분하기 위한 용도로 사용
2.내부 클래스(Inner Class) : 클래스 내에 선언된 클래스로, 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용
-외부 클래스의 멤버들에 쉽게 접근 할 수 있고, 코드의 복잡성을 줄일 수 있음.
-외부적으로 불필요한 데이터를 감출 수 있어 캡슐화(encapsulation)를 달성하는 데 유용함.
class Outer { // 외부 클래스
class Inner {
// 인스턴스 내부 클래스
}
static class StaticInner {
// 정적 내부 클래스
}
void run() {
class LocalInner {
// 지역 내부 클래스
}
}
}
(1)인스턴스 내부 클래스 : 객체 내부에 멤버의 형태로 존재하며, 외부 클래스의 모든 접근 지정자의 멤버에 접근할 수 있음
*인스턴스 내부 클래스는 반드시 외부 클래스를 생성한 이후에 사용해야 한다는 점을 꼭 기억하기.
(따라서 클래스의 생성과 상관없이 사용할 수 있는 정적 변수와 정적 메서드는 인스턴스 내부 클래스에서 선언할 수 없음)
(2)정적 내부 클래스 : 인스턴스 내부 클래스와 동일하게 클래스의 멤버 변수 위치에 정의하지만, static 키워드를 사용한다는 점에서 차이가 있음.
(3)지역 내부 클래스 : 클래스의 멤버가 아닌 메서드 내에서 정의되는 내부클래스

이미지 및 내용 출처 - code states
'부트캠프' 카테고리의 다른 글
Java 객체지향 프로그래밍 심화 2 (1) | 2022.12.30 |
---|---|
Java 객체지향 프로그래밍 심화 (3) | 2022.12.29 |
Java 객체지향 프로그래밍 기초 (1) | 2022.12.27 |
Java 배열 (0) | 2022.12.26 |
Java 조건문 - 반복문 (1) | 2022.12.23 |