[Java 객체지향] 생성자

2022. 1. 25. 11:09·Java

생성자 (constructor)

  • 생성자는 함수나 메서드와 달리 기능을 구현하지는 않고 오로지 객체를 생성하기 위해 호출된다. (new 키워드 사용)
  • 객체가 생성될 때 변수나 상수를 초기화하거나 다른 초기화 기능을 수행한다.
  • 생성자는 반환값이 없고 클래스와 동일한 이름을 사용한다.
  • 대부분 정의된 클래스(server 코드)에서 사용하는 것이 아닌 외부(client 코드)에서 사용되기 때문에 public인 경우가 대다수지만, 경우에 따라 private으로 선언하기도 한다.

 

기본생성자 (default constructor)

  • 클래스는 적어도 하나의 생성자는 반드시 가져야 한다.
  • 생성자가 없는 경우에도 컴파일러가 생성자 코드( e.g. public Student() {} )를 넣어주어 객체를 생성할 수 있다.
  • 이때 생성되는 생성자를 기본 생성자라고 하며, 구현부와 매개 변수가 없다.
  • 매개 변수가 있는 생성자가 있으면 기본 생성자는 제공되지 않는다.
  • 매개 변수가 있는 생성자와 없는 생성자를 함께 구현하고 싶다면 기본 생성자를 따로 명시해준다. (오버로딩)

 


Student.java
  • - 같은 이름으로 기본 생성자와 매개 변수가 있는 생성자를 함께 구현해줄 수 있다.

- 객체 생성 할 때 매개 변수가 반드시 필요한 경우(e.g. 회원 가입시 정보 기입)에는 기본 생성자를 따로 명시하지 않는다.

- 매개 변수의 이름은 멤버 변수와 같은 이름을 사용한다.

- 이름을 구분해주기 위해 this 키워드를 사용한다. ( this.멤버변수 = 매개변수 )

package ch06;

public class Student {

    public int studentId;
    public String studentName;
    public int grade;

    public Student() {    // 기본 생성자
    }

    public Student(int studentId, String studentName, int grade) {    // 매개변수가 있는 생성자

        this.studentId = studentId;    // this 키워드로 멤버변수와 매개변수를 구분한다.
        this.studentName = studentName;
        this.grade = grade;
    }

    public String showStudentInfo() {

        return studentName + " 학생의 학번은 " + studentId + "이고, " + grade + "학년 입니다.";
    }
}

 

StudentTest.java
package ch06;

public class StudentTest {
	
	public static void main(String[] args) {
		
		Student studentLee = new Student();
		System.out.println(studentLee.showStudentInfo());
		
		Student studentKim = new Student(12345,"Kim",3);
		System.out.println(studentKim.showStudentInfo());
	}

}

 

수행 결과
null 학생의 학번은 0이고, 0학년 입니다.
Kim 학생의 학번은 12345이고, 3학년 입니다.
저작자표시 비영리 변경금지 (새창열림)

'Java' 카테고리의 다른 글

[Java 객체지향] 참조 자료형 변수  (0) 2022.01.25
[Java 객체지향] 인스턴스와 힙메모리  (0) 2022.01.24
[Java 객체지향] 클래스 생성하고 메서드 구현해보기  (0) 2022.01.24
'Java' 카테고리의 다른 글
  • [Java 객체지향] 접근 제어 지시자
  • [Java 객체지향] 참조 자료형 변수
  • [Java 객체지향] 인스턴스와 힙메모리
  • [Java 객체지향] 클래스 생성하고 메서드 구현해보기
suaring
suaring
개발 공부 로그
  • suaring
    Sue's devlog
    suaring
  • 전체
    오늘
    어제
    • 분류 전체보기 (123)
      • Algorithm (2)
      • WEB (8)
      • Spring (26)
      • Java (83)
      • Kotlin (1)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
suaring
[Java 객체지향] 생성자
상단으로

티스토리툴바