[JAVA] Constructor (생성자) 와 내부 클래스

정동아·2023년 4월 24일
0

백엔드 부트캠프

목록 보기
10/41

Constructor (생성자)

생성자 : 인스턴스 변수들을 초기화하는데 사용되는 특수한 메서드

생성자의 가장 큰 특징으로는,

  • 생성자 이름은 클래스 이름과 같아야한다.
    -> 클래스 이름과 생성자 이름이 다르면 그 메서드는 생성자로서 기능을 수행할 수 없다.

  • 리턴 타입이 없다.
    -> void 키워드를 사용하는게 아니라 리턴 타입 자체가 아예 존재하지 않는거다.

  • 오버 로딩이 가능하다.
    -> 한 클래스 내에 여러 개의 생성자가 있을 수 있다.

클래스명(){} //기본 생성자

DefaultConst(){} // 예시) DefaultConst 클래스의 기본 생성자

매개변수가 있을 경우에는?
메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아서 인스턴스를 초기화하는데 사용한다.
각각 특성이 있는 인스턴스를 여러개 만들어야할 때 매개변수가 있는 생성자를 이용하면
인스턴스마다 다른 값을 가지고 초기화할 수 있어서 유용하다.

정리하면,

  • 기본 생성자: 매개변수가 없기 때문에 객체를 생성하던 방식으로 new 키워드와 생성자를 사용해서 호출
  • 매개변수가 있는 경우: 인스턴스를 만든 후에 인스턴스 필드값을 일일이 설정해줄 필요가 없다.
    -> 생성과 동시에 원하는 값으로 설정해 줄 수 있기 때문.
    그냥 그 개수와 타입에 알맞게 생성자를 호출해주면 된다.

생성자를 상호 호출하는 방법
자신이 속한 클래스에서 다른 생성자를 호출할때 this() 메서드를 사용한다.
얘를 사용하려면

  • this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다.
  • this() 메서드는 반드시 생성자의 첫 줄에 위치해야한다.

이 두가지 문법요소를 충족시켜야한다.

헷갈릴 수 있는 것은 this 키워드와 this() 는 다르다는 것.

this는 인스턴스 변수와 매개변수를 이름만으로 구분하기 어려워지는 문제가 생기는데, 이때 이를 구분해주기 위해서 주로 사용한다.
this 는 인스턴스 자신을 가르키며, 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this 를 통해서 인스턴스 자기 자신의 변수에 접근할 수 있는 것이다.

내부 클래스

내부 클래스는 말 그래도 클래스 내에 선언된 클래스를 말한다.
외부 클래스와 내부 클래스가 서로 연관되어있을 때 사용하며, 코드의 복잡성을 줄일 수 있다.
외부적으로 불필요한 데이터를 감출 수 있어 캡슐화를 달성하는데 유용하다고 한다.

내부 클래스의 종류로는 1)인스턴스 내부 클래스, 2)정적 내부 클래스, 3) 지역 내부 클래스 가 있다.

class Outer { // 외부 클래스
	
	class Inner {
		// 인스턴스 내부 클래스	
	}
	
	static class StaticInner {
		// 정적 내부 클래스
	}

	void run() {
		class LocalInner {
		// 지역 내부 클래스
		}
	}
} 

0개의 댓글