본문 바로가기
JAVA/언어입문

자바(JAVA) - 생성자(constructor)

by Sunyoung95 2022. 3. 9.
생성자(contructor)
    • 인스턴스를 초기화할 때의 명령어 집합
    • 생성자의 이름 = 그 클래스의 이름
    • 생성자는 메소드X, 상속X, 리턴값X
public class Student {
	int studentID;
    String studentName;
    int grade;
    String address;
    
    public String getStudentName() {
    	return studentName;
        }
    }
    • 위와같은 클래스를 생성했을때 아래 코드와 같이 인스턴스를 생성할 수 있다.
Student studentA = new Student();
    • 클래스 내에 따로 생성자를 만들지 않았지만 Student()라는 생성자를 통해 인스턴스를 생성하였다
    • 클래스 내에 따로 생성자를 만들지 않으면 JAVA Compiler가 디폴트 생성자를 자동생성한다
    • 인스턴스를 생성할 때 특정값이 꼭 들어가게 하고 싶다면 생성자를 직접생성할 수 있다.
    • 생성자를 여러개 생성하여 전부 따로 사용이 가능하다. (오버로드 overload)
public class Student {
	int studentID;
    String studentName;
    int grade;
    String address;
    
    public String getStudentName() {
    	return studentName;
        }
    
    // id와 name을 필수로 넣어야하는 생성자
    public Student (int id, String name) {
    	studentID = id;
        studentName = name;
        }
        
    // 생성자가 하나라도 존재하면 디폴트생성자가 생기지 않음
    // 따라서 디폴트생성자를 사용하려면 직접 생성해줘야함
    // 디폴트생성자 직접 생성
    public Student() {}
    
    }
  • 위와같이 2개의 생성자를 만들었을경우 두가지 생성자 모두 사용할 수 있다. (오버로드 overload)
  • 생성자의 이름은 .java파일 이름과 같아야한다.

 

디폴트 생성자 (default constructor)
  • 매개변수X, 구현부X
  • 하나의 클래스에는 반드시 적어도 하나의 생성자가 존재
  • 프로그래머가 생성자를 기술하지 않으면 디폴트 생성자가 자동 생성된다.(컴파일러가 코드에 자동으로 넣어줌)
  • 클래스 내에 매개변수가 있는 생성자를 추가하면 디폴트 생성자를 제공되지 않는다.
  • 생성자 오버로드(Constructor Overload)
    • 필요에 의해 생성자를 추가하는 경우 여러개의 생성자가 하나의 클래스에 존재
    • 더보기
      오버로딩(Overloading)
        : 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개변수에 따라 다르게 호출할 수 있게 하는 것.

      오버라이딩(Overriding)
         : 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것.

출처

https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해

jeong-pro.tistory.com

 

댓글