본문 바로가기
Backend/JAVA_Basic

12. JAVA, 생성자 함수(Constructor)

by 개발개발빈이 2022. 5. 31.

○ 생성자 함수 (Constructor)

    - 클래스명과 동일한 함수

    - 리턴형이 없다

    - new연산자와 함께 메모리를 할당할 때 사용한다 (참고 : JAVA, new연산자)

    - 오버로딩이 가능하다 (참고 : JAVA, 오버로드)

    - 기본 생성자 함수(Default Constructor)는 자동으로 생성됨

      단, 생성자 함수를 오버로딩하면 기본생성자 함수가 자동 생성되지 않기 때문에 수동으로 생성할 것을 추천!!

      형식) public 클래스명( ) { }

    - 소멸자 함수 (Destructor) : JAVA에는 없음 

                                                가비지 콜렉팅(Garbage Collcting) → JVM이 자동으로 메모리 회수를 함

class School{
	
  // 멤버변수 field

    private String name;
    private int kor, eng, mat;
    private int aver;


  // 생성자함수 constructor → 클래스명과 동일, 리턴형이 없음
	
    public School() { // 기본 생성자 함수 default constructor
        System.out.println("School()...");
    }
	
    // 생성자 함수도 오버로딩(함수명 중복정의)이 가능하다
    public School(String n) {
        name=n;
    }

    public School(int k, int e, int m) {
        kor=k;
        eng=e;
        mat=m;
    }
	
    public School(String n, int k, int e, int m) {
        name=n;
        kor=k;
        eng=e;
        mat=m;
    }	
	
			
  // 멤버함수 method
	
    public void calc() {
        aver=(kor+eng+mat)/3;
    }
	
    public void disp() {
        System.out.println(name);
        System.out.println(kor);
        System.out.println(eng);
        System.out.println(mat);
        System.out.println(aver);
    }
	
	
}//class end

 

    - 생성자 함수의 전달값은 객체선언과 동시에 초기값을 전달해 주는 역할을 한다

School one=new School();
one.calc();
one.disp();  //null, 0, 0, 0, 0

School two = new School("개나리");
two.calc();
two.disp();  //개나리, 0, 0, 0, 0

School three = new School(70, 80, 90);
three.calc();
three.disp(); //null, 70, 80, 90, 80

School four = new School("진달래", 70, 80, 90);
four.calc();
four.disp();  //진달래, 70, 80, 90, 80

 

○ 이클립스에서 생성자 함수 자동 코딩

    - 메뉴 Source > Generate Constructor using Fields... 

댓글