Language/Java

생성자

beomzh 2023. 7. 10. 21:04
728x90
반응형

생성자

  • 생성자 기본문법<class_name>([<argument_list]){[statements]}
  • 객체를 생성할 때 new 키워드와 함께 사용
  • 생성자는 일반 함수처럼 기능을 호출하는 것이 아니고 객체를 생성하기 위해 new 와 함께 호출됨
  • 객체가 생성될 때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출 함
  • 생성자는 반환 값이 없고, 클래스의 이름과 동일
  • 대부분의 생성자는 외부에서 접근 가능하지만 , 필요에의해 private로 선언되는 경우가 있다.

 

기본 생성자(default constructor)

  • 클래스에는 반드시 적어도 하나 이상의 생성자가 존재
  • 클래스에 생성자를 구현하지 않아도 new키워드와 함께 생성자를 호출할 수 있음
  • 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어준다.

ex)public Student(){}

-매개 변수가 없고,구현부도 없다.

public class Student {
    public int studentNumber;
    public String studentName;
    public int grade;

    public String showStudentInfo(){

        return studentName+"학생의 학번은"+studentNumber+"학년은"+grade;
    }
}

Student클래스에서 선언하고

public class StudentTest {
    public static void main(String[] args) {
        Student stu=new Student();


        System.out.println(stu.showStudentInfo());
    }
}

StudentTest클래스에서 객체를 생성해 호출하면 값이

String은 널값으로 int는 0 으로 호출된다.

    public Student(int studentNumber,String studentName,int grade){
        this.studentNumber=studentNumber;
        this.studentName=studentName;
        this.grade=grade;
    }

이러한 생성자를 추가 하게 된다면

 

 

 

전에 만들어 두었던 생성자가 에러가 나는데 이유는 디폴트 생성자가 제공되는 경우는 컴파일러에 생성자가 없는 경우이기 때문이다.

그래도 생성자 메소드를 쓰고 싶으면

 

 

 

직접 디폴트 생성자를 만들어 주면된다.

이러한 방식이 오버로딩이다.

 

 

728x90
반응형