hyeonga_code
Java_39_생성자 본문
- 생성자
- 멤버 변수를 초기화할 때 호출되는 메소드입니다.
- 생성자의 이름은 클래스의 이름과 동일하게 작성합니다.
- 초기화만 진행하기 때문에 반환값이 없습니다.
- 매개 변수의 이름은 자유롭게 작성해도 되지만 멤버 변수의 이름과 동일하게 작성합니다.
- 오버로딩이 가능합니다.
- Overloading_오버로딩 *****
- 하나의 클래스에 같은 이름의 메소드를 여러 개 정의하는 것
- 조건
- 메소드의 이름이 같아야 합니다.
- 매개 변수의 개수 또는 타입이 달라야 합니다.
- 리턴 타입은 오버로딩을 구현하는 데에 아무런 영향을 주지 못합니다.
2. 생성자
- 클래스 이름과 동일한 메소드
- 반환형이 없음 (void 포함)
- 멤버 필드의 초기값을 주기 위해 선언
- 생성자를 구현하지 않을 경우 JVM 자체의 default 생성자를 생성
- default 생성자
'클래스 이름'(){}
- 생성자가 하나라도 있을 경우 생성되지 않는다.
- 오버로딩이 가능
- 직접적인 호출 불가능
- 객체 생성 시 한 번 호출되는 메소드
- 참조 연산자(.) : 객체 멤버에 접근하기 위한 연산자
'생성자 이름'.'객체 이름' : 생성자안의 객체에 접근
- 객체 선언
'자료형' ' 객체 이름' = new '생성자 호출'
- 변수 선언
'자료형' '변수 이름';
- 배열 선언
'자료형' '배열 이름'[] = new '자료형'['개수'];
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.*;
class A01 {
int a;
int b;
// A01(){}; _ 생성자가 없을 경우 자동으로 생성되는 default 생성자 형식
A01(int x, int y) {
a = x;
b = y;
}
void disp() {
// 멤버 메소드
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
public class same {
public static void main(String[] args) {
A01 ap = new A01(5, 10);
// A01 안의 A01(x,y)를 불러오게됨 : 오버로딩
System.out.println("ap.a = " + ap.a);
System.out.println("ap.b = " + ap.b);
ap.a = 100;
ap.b = 200;
ap.disp();
}
}
|
=====
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package basic.array;
// 모든 클래스는 패키지 안에 생성합니다.
public class ArrayEx {
// 모든 함수_메소드는 클래스 안에 작성합니다.
public static void main(String[] args) {
// Java의 모든 코드는 함수 안에 작성합니다.
star(); // star() 메소드 호출
star(5); // star(a) 메소드 호출
star(3.2); // star(a) 메소드는 int 형 매개 변수만을 취급하므로 오류 발생
// >> double 형 매개 변수를 가지는 메소드를 선언
star(3, 2); // 매개 변수가 2개인 star(a, b) 메소드 호출
}
public static void star() {
// 매개 변수가 없고, 반환형도 없는 메소드 선언
System.out.println("**********");
}
public static void star(int a) {
// 매개 변수가 있고, 반환형도 없는 메소드 선언
for (int i = 0; i < a; ++i) {
System.out.print("*");
}
System.out.println();
}
public static void star(double a) {
// 매개 변수가 있고, 반환형도 없는 메소드 선언
for (int i = 0; i < a; ++i) {
System.out.print("*");
}
System.out.println();
}
public static void star(int a, int b) {
// 매개 변수가 2 개이고, 반환형이 없는 메소드 선언
for (int i = 0; i < b; ++i) { // 1 부터 b 만큼 반복
star(a); // 매개 변수가 1 개인 메소드 호출
}
}
}
|
- 직접적인 호출은 불가능합니다.
- 객체를 생성할 때 한 번 호출되는 메소드입니다.
- 참조 연산자(.)
- 객체 멤버에 접근하기 위한 연산자입니다.
'생성자 이름'.'객체 이름'
- 생성자 안의 객체에 접근할 수 있습니다.
- 기본 생성자 : 생성자를 구현하지 않을 경우 JVM 자체의 default 생성자를 생성합니다.
- default 생성자
'클래스 이름'(){}
- 생성자가 하나라도 있는 경우 생성되지 않습니다.
- 동일 패키지에서 접근이 불가능합니다.
public '생성자 이름'( '매개 변수 이름') {
매개 변수 초기화
'클래스에서 사용하는 멤버 변수 이름' = '생성자에서 선언한 매개 변수 이름';
- 멤버 변수와 매개 변수의 이름을 동일하게 작성하는 경우가 많으므로 구분이 어렵습니다.
> 멤버 변수 앞에 this를 사용하여 구분할 수 있게 작성합니다.
}
- public 으로 작성하는 경우 다른 패키지에서도 접근이 가능합니다.
'Java' 카테고리의 다른 글
Java_41_접근 제한자_public < protected < default < private (0) | 2023.10.02 |
---|---|
Java_40_this (0) | 2023.10.01 |
Java_38_Method/Class Area (0) | 2023.09.30 |
Java_37_멤버 메소드, static, final, 상속, 오버라이딩, 오브젝트 클래스, super() (0) | 2023.09.29 |
Java_36_멤버 변수 접근 제한 (0) | 2023.09.29 |