기억의 DataBase

생성자 본문

Java

생성자

Zester; 2019. 1. 17. 15:51
  • 생성자
인스턴스가 만들어질 때  해당 인스턴스를 초기화하기 위해서 필요
생성자를 지정하지 않으면 컴파일 과정에서 기본 생성자가 생성됨
클래스가 하나라도 생성자를 가지고 있으면, 기본 생성자가 생성되지 않음

ex) Dice dice = new Dice();
      Dice dice = new Dice(9);

       public Dice() {
             this.faceCount = 6;
       }
       
       public Dice(int faceCount) {
             if(faceCount < 1) {
                    throw new IllegalArgumentException();
             }
             this.faceCount = faceCount;
       }

※ Random은 생성자가 2개 있음
※ Random(), Random(long) - 생성자 오버로딩

       public Student(String name) {
             
           this(name,0,0,0); // 아래의 생성자를 호출해서 사용(보통 파라미터가 많은 쪽을 호촐)
       
       }
       
       public Student(String name, int kor, int eng, int math) {
             
             this.name = name;
             this.kor = kor;
             this.eng = eng;
             this.math = math;
       
       }

  • java.lang.*의 클래스들을 인스턴스화 할 수 없음
> 인스턴스를 만들려면 꼭 필요한 것이 생성자
> 생성자가 private이면 외부에서 인스턴스를 만들 수 없는데 메소드를 어떻게 사용?
> 메소드를 static으로 지정하면 인스턴스를 만들지 않고도 사용이 가능하다

public class MathTest {
       
       public static void main(String[] args) {
             
             // private 생성자라 인스턴스를 만들 수 없음(private MyMath(){})
             // MyMath mm = new MyMath(); (불가)
             
             // 인스턴스를 만들 수 없는 경우, static 메소드를 사용하는 방법이 있음
             MyMath.abs(50); >> public static void abs(int a) {
                                 System.out.println(a);
                                }
             
             
       }
}

ex) Math는 모든 메소드가 static한 메소드( Math.메소드명(); )

'Java' 카테고리의 다른 글

상속, 추상클래스  (0) 2019.01.18
접근지정자  (0) 2019.01.17
예외처리(Exception)  (0) 2019.01.17
객체지향  (0) 2019.01.16
package(디렉토리)와 중요 package  (0) 2019.01.14
Comments