Java의 기본 생성자
Java 언어에서 constructor
라는 용어는 프로그래밍에서 실행하는 방법과 유사합니다. 생성하는 동안 염두에 두어야 하는 생성자의 몇 가지 속성이 있습니다.
- 생성자의 이름은 항상 클래스 이름과 동일해야 합니다.
- 생성자의 반환 유형이 없어야 합니다.
- 클래스에는 매개변수화된 생성자와
인수 없는
생성자(기본 생성자)가 있을 수 있습니다. - 생성자는 객체가 인스턴스화될 때 항상 호출됩니다.
- 생성자는
abstract
,static
,final
및synchronized
와 같은 키워드로 진행하면 안 됩니다.
Java의 기본 생성자
Java 기본 생성자는 종종 no-args
생성자라고 합니다. 아래에서 코드 블록을 확인하여 Java의 기본 생성자를 이해할 수 있습니다.
public class Main {
public static void main(String[] args) {
B b = new B();
System.out.println(b.a);
}
}
class B {
int a;
}
위의 코드 블록에서 두 개의 클래스가 있음을 알 수 있습니다. 첫 번째는 main
메서드를 보유하고 다른 하나는 생성자의 기능을 설명하기 위해 작성되었습니다.
main
기능은 프로그램의 진입점이며 여기에서 실행이 시작됩니다. 따라서 드라이버 클래스 명령문 new B()
는 B
클래스의 공용 no-argument
생성자를 호출합니다. 주어진 생성자에 대한 명시적인 정의가 없었기 때문에 컴파일러는 자체적으로 기본 생성자를 생성하고 위의 명령문에서 이를 호출합니다.
생성자는 클래스의 변수를 초기화합니다. 생성자가 정의되지 않으면 컴파일러는 변수 값을 기본값으로 초기화합니다. B
클래스의 변수 a
가 println
함수에서 참조되면 인쇄된 값이 아래 출력에 표시됩니다.
출력:
0
Java의 매개변수화된 생성자
매개변수화된 생성자의 사용은 객체 생성 시 매개변수 수를 전달하는 것입니다. 아래는 그 기능을 보여주는 코드 블록입니다.
public class Main {
public static void main(String[] args) {
A a = new A(1, "One");
System.out.println(a.a + " " + a.b);
// A a1= new A();
}
}
class A {
int a;
String b;
A(int a, String b) {
this.a = a;
this.b = b;
}
}
위의 코드 블록에서 A
는 매개변수화된 생성자를 보여주는 클래스입니다. 그리고 다른 하나는 main
메소드를 보유하는 클래스입니다. 함수에서 new A(1, "One")
문은 A
클래스의 매개변수화된 생성자를 내부적으로 호출합니다. 생성된 객체는 클래스의 참조에 할당되고 생성자의 정의는 클래스에 정의됩니다.
생성자 A(int a, String b)
는 a
및 b
변수의 값을 초기화합니다. 매개변수에 전달된 값은 변수에 복사됩니다. println
함수에서 참조 변수를 사용하면 A
클래스의 클래스 변수를 호출합니다. 사이에 공백이 추가된 출력에서 인스턴스화된 값을 인쇄합니다.
그 옆에 주석문이 있습니다. //
연산자를 사용하여 실행되는 명령문에 대해 설명합니다. new A()
문은 내부적으로 클래스의 인수 없는
생성자를 찾으려고 시도합니다. 컴파일러가 기본 생성자를 찾지 못하면 기본 생성자를 만들 수 있습니다.
이 기능은 명시적 생성자가 정의되지 않은 경우에만 제한됩니다. 따라서 이 경우 사용자는 no-args
생성자를 수동으로 만들어야 합니다. A a1= 새로운 A();
함수가 컴파일 타임 오류를 발생시킵니다. 이 문제를 해결하는 두 가지 옵션은 기본 생성자를 만들거나 기존 문을 중단으로 이끄는 기존 매개 변수화된 생성자의 서명을 변경하는 것입니다. 따라서 행이 주석 처리됩니다.
출력:
1 One
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn