클래스와 인스턴스

Jay_u·2023년 1월 20일
0

Java

목록 보기
2/8

붕어빵 틀클래스이다.

붕어빵 틀을 사용해서 만든 붕어빵인스턴스이다.

붕어빵 틀 자체만으로는 상태가 없다.
오로지 틀을 가지고 빵을 만들었을 때 실체화되는 것이다.

인스턴스인 붕어빵은 상태를 가지며 베어물(메서드)거나 찢거나(메서드)를 통해 붕어빵의 상태(팥이 줄줄 새는)가 바뀐다.


우리가 붕어빵을 한개씩 만들 때마다 붕어빵 틀이 찍어낸 붕어빵의 개수를 바꾼다고 해보자.
붕어빵 틀이 찍어낸 개수는 class field이고 이는 굳이 붕어빵을 만들지 않아도 붕어빵 : 인스턴스가 공유하는 정보로 호출이 가능하다.(ex 0)

이 개념은 객체지향의 캡슐화와 관련이 있다.

인스턴스 메소드와 인스턴스 필드를 private으로 하고 get/set으로만 수정이 가능하게 하면서
클래스 메소드와 필드는 public으로 열어놓는 것이다.


private construcor

유틸리티 클래스는 대게 static으로만 이루어져 있는데 이는 생성자를 막는다.
생성자 => 인스턴스화

왜 막을까?

객체마다 다른 속성을 가지고 있을 때
정적 필드와 메소드로만 구성된 클래스는 객체를 만드는 것이 의미가 없다. 심지어 메모리상 낭비를 가져온다.

  • 참고
    생성자를 막는 방법은 private으로 클래스명의 생성자를 만드는 것이다.
    자바는 public으로 클래스명의 생성자를 자동으로 만들어주기 때문이다. (보이지 않더라도 이미 만들어져 있다.)


생성자 체인(Constructor Chaining)

생성자 체인은 this 또는 super 키워드를 사용해서 생성자에서 다른 생성자를 호출하는 기술이다.
여기서는 this를 이용해서 만드는 과정을 알아보겠다.

생성자의 파라미터 개수가 차이날 때 this()를 이용해서 연결할 수 있다.

public FishBread() {
	this("readBean");
}

public FishBread(String taste) {
	this(0, taste);
}

public FishBread(int number, String taste) {
	this.number = number;
    this.taste = taste;
}
    

동작과정
1. 메인메소드에서 FishBread() 기본 생성자를 호출하면
2. 기본생성자는 맛이 팥인 인수가 1개인 생성자를 호출한다.
3. 맛이 팥인 인수가 1개인 생성자는 갯수에 0을 넣은 인수가 2개인 생성자를 호출한다.

왜 생성자 체인을 해야하나?

  1. 생성자 체인 기술을 사용하면 다른 생성자의 속성 또는 부모 클래스의 속성에 접근할 수 있습니다.

  2. this, super 키워드를 호출하면 되므로 코드가 간소화됩니다.

  3. 유지관리에 용이합니다.

>> 개인적으로 자주 안써봐서 어색하지만 이런것도 있음을 알아둬야 할 것 같다.

profile
정확한 정보를 전달할려고 노력합니다.

0개의 댓글