1. 생성자 개요
- 객체 생성 과정
-> 객체에 대한 기억장소 할당
-> 객체의 변수(속성) 초기화
-> 생성자 호출
- 생성자는 객체가 생성될 때 변수를 초기화하는 작업을 담당
- 생성자는 객체 생성시 자동으로 호출됨 -> 따로 호출하는 등의 작업 필요X
- 생성자의 명칭 부여는 변수명 부여 규칙과 동일하며 반드시 클래스명과 같도록 함
- 생성자의 반환데이터형은 작성하지 않음 -> 반환데이터형이 없다!
- 일반적으로 접근제한자는 외부에서 접근이 가능하도록 public(예약어)으로 부여함
2. 생성자 정의 및 호출
- 기본 문법
접근제한자 생성자명칭(매개변수 리스트) { -> 필요시 매개변수 리스트 적음, 없을 수도 있음
문장;
}
- 예 : 클래스명이 TestClass 일 경우
public TestClass() {
System.out.println("클래스 생성자"); -> 객체가 처음으로 생성될 때 자동으로 출력됨
}
- 생성자 호출
-> 객체 생성시에 생서자가 자동 호출됨
-ex)
TestClass test = new TestClass();
객체변수 생성자
- 생성자 : 객체가 생성될 때 해야 될 일을 담당하는 프로그램 영역
- 생성자 명칭 = 클래스명과 동일. 반환형 없음
TestCls (클래스명)
public TestCls() {
System.out.println("자바");
}
TestCls test = new TestCls(); -> 객체를 만드는 과정
생성자를 호출하는 것 =
-> 이 문장이 처리됨과 동시에 "자바"가 출력됨
+ 생성자 활용 예제
public class MyExam { -> MyExam 클래스
MyExam(String language) { -> 생성자명도 MyExam(클래스명과 동일), 앞에 반환데이터명 X
System.out.println(language + "생성"); -> 문자열을 받아서 "생성"과 결합
} -> 여기까지가 생성자의 영역
public static void main(String args[]) { -> 객체 생성을 위해 main method 하나가 필요
MyExam ex1 = new MyExam("Java"); -> MyExam의 객체 ex1, 2, 3 세개 생성 -> new 연산자 사용
MyExam ex2 = new MyExam("C++"); -> C++이라는 문자열이 language에 들어감
MyExam ex3 = new MyExam("Basic");
} -> 메인 메소드 영역
->
Java생성
C++생성
Basic생성
println은 줄바꿈이 이뤄짐
생성자 작성 시 반드시 클래스 명칭과 동일
인수 사용해서 생성자 만들 수도 있음
변수를 이용해서 인수를 받아들여 서로 다른 형태의 객체 생성 가능
[생성자 오버로딩]
1. 생성자 오버로딩 개요
- 메서드 오버로딩과 유사하며 생성자의 매개변수를 다르게 하여 여러 개의 생성자를 작성할 수 있는 기법
- 여러 개의 오버로딩 된 생성자를 정의할 수 있음
- 생성자 오버로딩 조건
-> 매개변수의 개수가 다름
-> 매개변수의 데이터형이 다름
ex) 다음 두 생성자는 오버로딩 된 경우임
class TestClass
public TestClass(){ -> 디폴트 생성자 : 매개변수가 없는 생성자
문장;
}
public TestClass(int num) { -> 매개변수가 있음
문장;
}
2. 디폴트 생성자
- 클래스 정의시 생성자를 반드시 작성하지 않아도 되며 이 경우 디폴트 생성자가 내부에서 자동적으로 정의됨
- 디폴트 생성자는 매개변수 없는 형태의 생성자와 모양이 동일함
- 프로그래머가 어떤 형태든지 생성자를 정의했을 경우 디폴트 생성자는 자동으로 정의되지 않음
- 특별한 경우가 아니면 처리해야 할 내용이 없더라도 비어있는 형태의 디폴트 생성자를 프로그래머가 정의하는 것이 바람직함
class TestCls {
int num; -> 생성자를 작성하지 않고 클래스 선언.
} -> 이걸 사용하기 위해서 아래에
Testcls test = new Testcls(); -> 객체 생성
class TestCls {
int num;
}
public TestCls(){ -> 직접 생성자 작성
}
Testcls test = new Testcls(); -> 객체 생성하여 호출
- 생성자 정의 및 오버로딩 예
public class Exam11_1 {
public Exam11_1() { -> 반환타입 없는 메서드. 생성자
System.out.prinln("이 부분은 생성자");
}
public Exam11_1(int num) {
for (int i = 0; i < num; i++) {
System.out.println("오버로딩된 생성자");
}
}
public static void main(String[] args) {
// T0000 Atugo-generated method stub
Exam11_1 ex1 = new Exam11_1();
Exam11_1 ex2 = new Exam11_1(3);
}
}
->
이 부분은 생성자
오버로딩된 생성자
오버로딩된 생성자
오버로딩된 생성자
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[취성패] 자바 배우기 - 선수학습(상속과 접근제어) (0) | 2020.12.13 |
---|---|
[취성패] 자바 배우기 - 선수학습(static) (2) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(메서드와 오버로딩) (0) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(클래스) (0) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(배열-일차원, 이차원) (0) | 2020.12.12 |