본문 바로가기
자바 객체지향 문법

자바 객체지향 문법 - 생성자, 추상

by 플라퉁 2023. 2. 16.
728x90
반응형

생성자 

 - 인스턴스를 생성할 때 사용한다. 

 - 어떤 값을 가지고 인스턴스가 만들어지게 하고 싶다면 생성자를 사용한다.

 - 클래스 작성시 생성자를 하나도 만들지 않았다면 자동으로 기본 생성자가 생성된다.

 - 기본생성자는 매개변수를 하나도 받지 않는 생성자를 말한다.

 

 - 생성자를 하나라도 만들어 준다면 기본 생성자는 사라지고 만들어준 생성자를 사용하게 된다.

 - 이때 private로 만들어진 필드는 외부에서접근이 불가능 하기 때문에 setter getter를 사용한다.

 

생성자 오버로딩

 - 생성자는 매개변수의 개수가 다르거나, 타입이 다르다면 여러개를 가질 수 있다.

 

자신의 생성자를 호출 할때는 this()를 사용한다.

 - this는 인스턴스 자기 자신을 참조할 때 사용하는 키워드이다.

 - this() 생성자는 자기 자신의 생성자를 말한다.

 - this() 생성자는 생성자 안에서만 사용가능하다.

 - this() 생성자는 생성자 안에서 super()생성자를 호출하는 코드 다음이나,첫번째 줄에 위치하여야한다.

 

부모 생성자를 호출할 때는 super()를 사용한다.

 - super는 인스턴스 부모를 참조할 때 사용하는 키워드이다.

 - super() 생성자는 부모 생성자를 의미한다.

 - super() 생성자는 생성자 안에서만 사용가능 하다.

 - super() 생성자는 생성자 안에서 첫줄에만 올 수 있다. 

 - 생성자는 무조건 super() 생성자를 호출해야 한다. 사용자가 super() 생성자를 호출하는 코드를 작성하지 않았다면

자동으로 부모의 기본 생성자가 호출된다. 

 - 부모 클래스가 기본 생성자를 가지고 있지 않다면 , 사용자는 반드시 직접 super() 생성자를 호출하는 코드를 작성해야한다.

 

추상 클래스

 - 추상 클래스는 인스턴스가 될 수 없다.

 - 추상 클래스를 상속받는 자손이 인스턴스가 된다. 

 - abstract 키워드를 사용하여 클래스를 정의 한다.

 - 추상 클래스는 보통 1개 이상의 추상 메서드를 가진다. (추상 메서드가 없어도 오류가 발생 하진 않는다.)

 - public abstract class 클래스명 {}

 

템플릿 메소드 패턴으로 배우는 추상 클래스

 

// Controller의 종류가 여러개더라

// 초기화 - 같은 코드

// 실행 - 다른 코드

// 마무리 - 같은 코드

 

public abstract class Controller {

// protected는 같은 package이거나 상속받았을 경우 접근 가능하다.

  protected final void init(){

    System.out.println("초기화 하는 코드");

  }

// final을 사용하면 overriding 방지

  protected final void close(){

    System.out.println("마무리 하는 코드");

  }

  protected abstract void run(); // 매번 다른 코드

 

// 내가 가지고 있는 메소드 호출

// 어떤 순서를 가지고 있다.

  public void excute(){

   this.init(); // 초기화

   this.run(); // 실행

   this.close(); // 마무리

  }

}

728x90
반응형

댓글