JAVA
Test076.java / 클래스와 인스턴스 / 생성자(Constructor)
universedevelope
2022. 9. 9. 17:05
/* ==================================
■■■ 클래스와 인스턴스 ■■■
================================= */
// 생성자(Constructor)
/*
○ 생성자(Constructor)의 역할
1. 인스턴스 생성 → 메모리 할당
2. 초기화
○ 생성자(Constructor)의 특징
1. 생성자는 메소드이지만, 일반 메소드처럼 호출될 수 없으며,
반환 자료형을 가질 수 없다.
(『void』 조차 가질 수 없으며, 값을 반환할 수도 없다.)
2. 생성자는 클래스와 동일한 이름을 가져야 한다.
(대소문자 명확히 구분)
3. 생성자는 객체를 생성하는 과정에서 『new 생성자();』의 형태로 호출된다.
(인스턴스 생성 시 단 한 번만 호출)
*/
class NumberTest
{
int num;
// 사용자 정의 생성자가 존재하지 않을 경우...
// ----------
// └> 개발자가 직접 코드레벨에서 작성한 생성자
// 컴파일 과정에서 자동으로 삽입되는 디폴트 생성자(default constructor)
// ↓
/*
NumberTest()
{
// 텅 비어있는 상태
}
*/
// ↑
NumberTest()
{
System.out.println("사용자 정의 생성자 호출");
num = 10;
}
int getNum()
{
return num;
}
}
public class Test076
{
public static void main(String[] args)
{
// NumberTest 클래스 기반의 인스턴스 생성
NumberTest n1 = new NumberTest();
/*
NumberTest n1 = new NumberTest
+
NumberTest();
*/
//-- 인스턴스가 생성되는 시점에서
// 이와 동시에 선택의 여지 없이 생성자 호출이 이루어진다.
// ----------
// NumberTest()
// 암것도안했는데 컴파일이 되네요~? NumberTest 클래스를 생성하면 자동으로
// NumberTest의 메소드가 생성된다(표시는 안된다.)
// nt1.NumberTest();
//--==>> 에러 발생(컴파일에러)
// cannot find symbol
System.out.println(n1.getNum()); // → 전역변수는 자바가 0으로 초기화시켜준다.
//--==>> 0
n1.num = 100;
System.out.println(n1.getNum());
//--==>> 100;
NumberTest nt2 = new NumberTest(); // n1 과 nt2 는 다르기때문에 인스턴스가 다른
// 경우에 대해서는 생성자를 계속호출할수있음
int testResult = nt2.getNum();
System.out.println(testResult);
}
}
/*
사용자 정의 생성자 호출
10
100
사용자 정의 생성자 호출
10
계속하려면 아무 키나 누르십시오 . . .
*/
728x90