앞서 객체지향 개념 이해 부분에서
본사와 프렌차이즈에 빗대어 설명을 했다.
앞전의 코드에서는 이미 매장이 만들어진 이후에 매장에 대한 정보를 수동으로 입력했는데,
본사에서 처음부터 매장에 대한 정보를 형식화하도록 하는 것이 생성자이다.
바로 코드를 통해 예시를 보면,
좌측의 본사 클래스에서 체인점에 대한 속성들을 형식화해놨다.
우측의 체인 클래스에서는 값만 입력하면 된다.
생성자 특징 정리
• 메서드 이름이 붙지 않고, 반환 타입(해당 클래스)이 앞에 붙으며, 뒤로 괄호가 따라옴
• return을 명시하지 않음 → 해당 클래스 타입의 인스턴스 반환
• new 연산자와 함께 사용되어 인스턴스를 반환
• 생성자 없이 값을 따로 지정해줘서 사용할 수도 있지만,
생성자를 만들지 않았다해도 생성자는 존재함(컴파일러가 자동 생성)
• 생성자 자동 호출 단축키 : Mac) Cmd + N / Window) Alt + Insert
This 특징 정리
• this는 본사가 생성할 각 프렌차이즈 매장(생성될 인스턴스)을 의미함
• 메소드 내에서 같은 이름의 변수나 인자가 없다면, 식별자는 this의 필드를 가리킴
• 같은 이름의 변수나 인자가 있다면 덮어씌워짐
• 필드에는 this를 붙여 구분
좀 더 활용해서 예제를 들어보겠다.
좌측의 본사 클래스와 우측의 메뉴 클래스를 만들어
생성자까지 만들어줬다.
그리고 위의 체인 클래스에서 각 프렌차이즈의 값들을 입력해주고
주문에 대한 값도 넣어줬다.
이미지 하단의 결과창을 보면 주문에 대한 정보가 뜨는 걸 확인할 수 있다.
다음으로 static에 대해 더 알아보는데,
static은 클래스(정적) 필드 메소드라 하기도 한다.
이해를 위해 아래 예시를 보면,
static이 붙은 부분은 본사에 해당하는 정보고,
static이 붙지 않은 부분은 인스턴스(체인점)에 대한
필드(속성)와 메소드(기능)다.
여기서 static에 대한 특징이 나오는데,
1. static이 붙은 본사 정보는 인스턴스를 생성하지 않고 바로 사용하면 된다.
2. 인스턴스의 필드나 메소드는 static이 붙은 본사 정보에 접근 불가하다.
3. 인스턴스의 메소드(기능)에서는 본사 정보에 접근이 가능하다.
4. 인스턴스에서는 본사 정보에 접근 가능하나, 권장하지 않는다.
이 static을 이용해서 자동으로 매장의 지점 번호를 매기도록 응용할 수 있다.
앞에서 본사 매장과 프렌차이즈 매장에 대한 정보를 입력하는 예제에서
프렌차이즈 정보를 입력하려면 그 정보를 알고 있어야한다.
지점이 많다면 일일이 외우는 게 불가한 경우
생성 순서에 따라 자동으로 번호가 매겨지게 하는 것이다.
노란 부분처럼 lastNo를 0으로 초기화해두고,
지점 번호가 1씩 증가하도록 초기화 해준다.
우측의 Main 클래스에서 지점명만 부여했는데,
자동으로 지점번호가 1씩 증가하며 붙게 된다.
좌측 하단의 파란 부분처럼 1씩 늘어나는 설정을
초기화 해서 해주지 않고 메소드 실행 부분에서 해줘도 되는데,
실무에서는 초기화 단계에서 많이 해준다고 한다.
'Back > Java' 카테고리의 다른 글
Day75_객체지향 복습_IV 상속과 다형성 (0) | 2023.11.08 |
---|---|
Day74_객체지향 복습_III 접근 제어자, Getter&Setter (0) | 2023.11.04 |
Day71_객체지향 복습_I 객체지향 개념 (0) | 2023.10.31 |
Day70_for문 별찍기 (2) | 2023.10.27 |
Day26_Java 메서드 정리 (0) | 2023.06.17 |