뒤죽박죽으로 포스팅이 되었구만..깜빡하고 안 올려서 재 포스팅..
생성자(Constructor)
1) 클래스를 대상으로 객체를 생성하는 역할을 함
2) 클래스의 이름과 동일
3) 클래스에 포함되어 있으며, 객체를 생성할 때 자동으로 딱 한번만 호출이 됨
4) 클래스는 생성자를 통해서 객체로 생성이 됨
[접근제한] 생성자이름(매개변수) {
생성자 호출 시 실행될 문장;
}
5) 생성자는 메소드 형태를 가지고 있음
=> 리턴타입(반환형) (X), void(X), 매개변수(O)
6) 모든 클래스는 반드시 한 개 이상의 생성자를 가지고 있음
7) 사용자가 생성자를 정의하지 않으면, JVM이 컴파일 시점에서 자동으로 기본 생성자(=디폴트 생성자)를 만들어 줌
기본 생성자와 인자 생성자로 객체를 생성한 예
package Class;
class Student {
//멤버변수
int id;
String name;
String major;
String address;
//기본 생성자
//얘를 통해 객체가 생성되고 있음, 소괄호 안에 아무것도 없다는 건, default값을 넣어라 이런 의미
public Student() {}
//인자 생성자
public Student(int h, String n, String m, String a) {
id=h;
name=n;
major=m;
address=a;
}
// Student라는 동일한 이름의 생성자 2개 이상 있어도,
// 매개변수의 갯수가 다르니까 오류가 안나는 것 !
// 이를 생성자 오버로딩이라 한다.
//멤버메소드
void display() {
System.out.println("학번>>> " + id);
System.out.println("이름>>> " + name);
System.out.println("학과>>> " + major);
System.out.println("주소>>> " + address);
}
public class Ex04_Student { // 이름 클래스만 퍼블릭 들어간다.
public static void main(String[] args) {
// 기본 생성자로 객체를 생성한 예
// 디폴트 생성자 호출
// - 파라미터 및 중괄호 내부 없음
// 생성자가 없는 경우 자동 기입 됨
Student student=new Student();
student.id=20210811;
student.name="김아무개";
student.major="자바학과";
student.address="서울시 종로구";
student.display();
System.out.println();
//인자 생성자로 객체를 생성한 예
Student student2=new Student(
20210812, "이아무개", "컴퓨터학과", "서울 어딘가");
student2.display();
}
}
결과
학번>>> 20210811
이름>>> 김아무개
학과>>> 자바학과
주소>>> 서울시 종로구
학번>>> 20210812
이름>>> 이아무개
학과>>> 컴퓨터학과
주소>>> 서울 어딘가
3. 생성자의 사용 목적 : 멤버 변수들의 초기화를 목적으로 사용
4. 생성자의 특징
1) 생성자 이름 == 클래스 이름
2) 메소드와 다르게 반환형이 없음
3) 클래스는 반드시 한 개 이상의 생성자를 가지고 있음
4) 생성자 오버로딩이 가능함(즉, 여러 개의 생성자가 존재 할 수 있음)
5) 생성자가 보이지 않으면 기본 생성자가 숨어 있음.
6) 기본생성자라 함은 매개변수가 없는 생성자를 말함.
7) 기본생성자 외에 다른 생성자를 만들면, 숨어 있던 기본생성자는 사라짐.
8) 기본 생성자 외에 다른 생성자를 만들면, 무조건 기본 생성자를 만들어 줄 것
(만약 기본생성자를 만들지 않으면 상속에서 문제 발생)
* 생성자 다중정의(Constructor Overloading)
- 동일한 클래스에서 동일한 이름의 생성자를 여러 개 정의하는 문법.
- 조건 : 매개변수의 자료형 또는 매개변수의 갯수가 달라야 함.
* 위 예제에서
//기본 생성자
//얘를 통해 객체가 생성되고 있음, 소괄호 안에 아무것도 없다는 건, default값을 넣어라 이런 의미
public Student() {}
//인자 생성자
public Student(int h, String n, String m, String a) {
id=h;
name=n;
major=m;
address=a;
}
// Student라는 동일한 이름의 생성자 2개 이상 있어도,
// 매개변수의 갯수가 다르니까 오류가 안나는 것 !
// 이를 생성자 오버로딩이라 한다.
이 부분을 보면 생성자 다중정의가 감이 잡힐 것이다.
* 생성자의 역할
1. 객체를 생성하는 역할
2. 멤버변수의 초기값을 할당하는 역할
3. 객체를 생성하는 시점에 자동적으로 처리해야 할 내용을 설정하는 역할.
'Back-End > Java' 카테고리의 다른 글
(스크랩) [Java] Public class 와 class의 차이 (0) | 2021.08.25 |
---|---|
[Java] 객체 배열 (0) | 2021.08.23 |
[Java] 메소드 호출 시 반환형 (0) | 2021.08.19 |
[Java] String 클래스의 특징 및 주요 메서드(StringBuffer, StringTokenizer) (0) | 2021.08.19 |
[Java] Util 패키지의 주요 클래스_Random, Math, Calendar , Array, ArrayList (0) | 2021.08.19 |
댓글