생성자
return Type이 없습니다.
클래스 이름과 같아야 합니다.(대소문자 구별)
new를 이용하여 객체를 메모리에 할당한 후 할당된 메모리를 특정 값으로 초기화하는 역활을 합니다.
기본 생성자가 생략되어 있는 경우
SchoolMain2.java
SchoolMain2.java
기본생성자를 선언한 경우
생성자에 초기화하는 변수가 없어도 반드시 생성자를 선언할 것을 권장합니다.
상속 관계에 들어가면 이 기본 생성자가 선언되지 않으면 상황에 따라 에러를 발생합니다.
School3.java
SchoolMain3.java
기본생성자를 선언해야 하는 경우
인수를 받는 생성자가 존재하게되면 반드시 기본 생성자를 선언해야 합니다.
기본 생성자는 하는 일이 없어도 반드시 선언을 적극 권장합니다.
School4.java
SchoolMain4.java
생성자에 대한 개념 부가 설명(중요)
자바에서의 생성자
기본생성자를 이용하여 학생을 만들고보니 학생클래스 내부의 성적과 학생정보에 대한 클래스가 존재합니다. 그런데 이 클래스를 활용할 수 없습니다. Student student=new Student( );
생성자 중 객체를 전달하는 생성자가 있습니다. 그런데 문제는 이 객체를 생성하고 객체전달을 해야 사용이 가능 합니다. Student student=new Student(sungjuk, studentinfo);
성적과 학생정보 객체를 생성 그리고 학생 객체 생성자함수에 전달을 해주었지만 문제가 발생헀습니다. 문제는 다음과 같습니다. Sungjuk sungjuk=new Sungjuk( ); StudentInfo studentinfo=new StudentInfo( ); Student student=new Student(sungjuk, studentinfo);
성적 정보 부재
학생 정보 부재
성적정보를 입력하는 생성자 함수를 찾았고 Sungjuk sungjuk=new Sungjuk(subject);
학생정보를 입력하는 생성자 함수를 찾았습니다. StudentInfo studentinfo=new StudentInfo(1,"김하나","010-1111-1111"); 그러나 성적정보는 subject 라는 클래스로 이루어져 있습니다.
subject 라는 객체를 생성하고 점수를 전달합니다. Subject subject=new Subject(80,80,80); Sungjuk sungjuk=new Sungjuk(subject);
해결된 예시는 다음과 같습니다.
즉 위 사례를 통한 트러블슈팅은 다음과 같습니다.
각 클래스의 값 조회는 가능하나 활용이 불가능했다.
각 클래스를 따로 생성하여 한 로직에서 모든 정보를 대입하고,
대입한 클래스를 하나의 학생객체에 담아 주었습니다. 즉 객체가 객체를 담은 것입니다.
정리하면 생성자를통해 새로운클래스를 생성하였지만 대입한 인자값 또한 생성자로 생성된 객체로 주입을 한 것입니다.
Last updated