티스토리 뷰

Spring/Java

[Java] 초기화와 생성자

DevJunku 2021. 12. 2. 21:29

출처

Java - 생성자

초기화: 어떤일을 시작하기 전에 준비하는 단계

객체지향 프로그래밍에서도 초기화에 해당하는 기능이 제공되는 데, 이것을 생성자(Constructor)라고 한다.

아래의 예제를 다시 생각해보자.

Calculator c1 = new Calculator();
c1 setOprands(10, 20);
c1.sum();
c1.avg();

지금 위 코드를 보면 sum()과 avg()를 실행하기 위해서는 setOprands를 실행해야 함. 근데 이걸 실제로 기억해서 사용하는 경우는 좀 드물기 때문에, 실제로 이걸 좀 간단히 할 수 있는 방법이 있을까 생각하게 됨. 그렇기 때문에 이러한 초기화 과정을 강제로 진행할 수 있도록 진행한다면, 초기화에 큰 문제가 발생하지 않을 것임.

그 방법이 바로 인스턴스를 생성할 때 강제로 변수를 집어 넣도록 할당하는 방법이 있음. 그렇기 때문에 아래와 같이 코드를 바꾼다면, 초기화에 대한 부담감을 덜고 코드를 짤 수 있을 것임.

Calculator c1 = new Calculator(10, 20);
c1.sum();
c1.avg();

아래는 이를 활용한 예제임

class C {
  int left, right;

  public C(int left, int right) {
      this.left = left;
      this.right = right;
  }

  public void sum() {
      System.out.println(this.left + this.right);
  }

  public void avg() {
      System.out.println((this.left + this.right)/2);
  }

}

public class ScopeDemo {
    public static void main(String[] args) {
        C c1 = new C(10, 20);
        c1.sum();
        c1.avg();

        C c2 = new C(20, 40);
        c2.sum();
        c2.avg();

    }
}

결론적으로 말하자면, 클래스(C)의 이름과 같은 메소드를 만든다. 이때 public 붙여줘야함.

그러면 public C(int left, int right){ ... } 를 생성자이고 이걸 통해서 instance를 생성하는 것이다.

'Spring > Java' 카테고리의 다른 글

[Java] Overriding vs Overloading  (0) 2021.12.06
[Java] 상속 / 상속과 생성자  (0) 2021.12.03
[Java] 유효범위  (0) 2021.12.02
[Java] 클래스 맴버와 인스턴스 맴버  (0) 2021.12.02
[Java] 클래스와 인스턴스 그리고 객체  (0) 2021.12.02