자바에서는 생성자 연결 일련의 호출이다 생성자 객체를 초기화할 때. 인스턴스만 사용하여 여러 생성자를 차례로 호출하려고 할 때 사용됩니다. 이 섹션에서는 다음 내용을 논의하겠습니다. 적절한 예제와 함께 Java의 생성자 연결을 자세히 설명합니다. 간단히 살펴 보겠습니다. Java의 생성자는 무엇입니까?
건설자
~ 안에 자바 , 생성자는 메서드와 동일하지만 유일한 차이점은 생성자의 이름이 클래스 이름과 동일하다는 것입니다. 클래스의 인스턴스를 생성하는 데 사용됩니다. 클래스의 객체를 생성할 때 자동으로 호출됩니다. 반환 유형이 없습니다. 생성자는 될 수 없다는 것을 기억하십시오 추상적인 , 결정적인 , 동기화됨 , 그리고 공전 . 생성자를 재정의할 수 없습니다.
Java에는 두 가지 유형의 생성자가 있습니다.
- 기본 생성자(인수 없는 생성자라고도 함)
- 매개변수화된 생성자
생성자 체이닝
생성자 체인에서 생성자는 동일한 클래스의 다른 생성자로부터 호출됩니다. 이 프로세스는 다음과 같습니다. 생성자 체인. 상속을 통해 발생합니다. 파생 클래스의 인스턴스를 만들 때 상속된 클래스(기본 클래스)의 모든 생성자가 먼저 호출된 다음 호출 클래스(파생 클래스)의 생성자가 호출됩니다.
우리는 두 가지 방법으로 생성자 연결을 달성할 수 있습니다:
자바 구분 기호
생성자의 순서를 변경해도 출력에는 영향을 미치지 않습니다.
생성자 연결의 필요성
수행해야 할 작업이 5개 있다고 가정해 보겠습니다. 이러한 작업을 수행하는 방법에는 두 가지가 있습니다. 단일 생성자에서 모든 작업을 구현하거나 단일 생성자에서 별도의 작업을 만드는 것입니다.
생성자 연결 메커니즘을 사용하면 단일 생성자에서 여러 작업을 구현할 수 있습니다. 따라서 이러한 유형의 문제에 직면할 때마다 생성자 체이닝을 사용해야 합니다. 생성자 연결을 사용하면 프로그램을 더 읽기 쉽고 이해하기 쉽게 만들 수 있습니다.
자바의 링크리스트
생성자 연결 규칙
- 을 사용하는 표현 이것 키워드는 생성자의 첫 번째 줄이어야 합니다.
- 를 사용하지 않는 생성자가 하나 이상 있어야 합니다. 이것
다른 생성자를 호출하는 생성자
생성자 호출은 두 가지 방법으로 수행할 수 있습니다.
참고: 동일한 생성자 블록에서는 this()와 super()를 동시에 사용할 수 없습니다.
이 두 개념을 자바 프로그램을 통해 이해해보자.
생성자 연결 예제
현재 클래스 생성자 호출하기
우리는 사용 이것() 동일한 클래스 내에서 현재 클래스 생성자를 호출하려는 경우 키워드입니다. this()의 사용은 필수입니다. JVM 절대로 자동으로 넣지 마세요. 감독자() 예어. this()는 생성자의 첫 번째 줄이어야 합니다. 없는 생성자가 하나 이상 있어야 합니다. this() 키워드 .
통사론:
this(); or this(parameters list);
예를 들어:
this(); this('Javatpoint');
Java 프로그램을 만들고 현재 클래스 생성자를 호출해 보겠습니다.
ConstructorChain.java
public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } }
산출:
위의 예에서는 매개변수를 전달하지 않고 클래스의 인스턴스를 만들었습니다. 먼저 기본 생성자를 호출하고 기본 생성자는 this() 때문에 매개변수화된 생성자로 호출을 리디렉션합니다. 매개변수화된 생성자 내부의 명령문이 실행되고 기본 생성자로 돌아갑니다. 그 후 기본 생성자의 나머지 명령문이 실행되고 개체가 성공적으로 초기화됩니다. 다음은 생성자의 호출 순서입니다.
ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println()
슈퍼 클래스 생성자 호출
때로는 자식 클래스(파생 클래스)에서 슈퍼클래스(부모 클래스) 생성자를 호출해야 하는 경우가 있습니다. 이러한 경우 파생 클래스 생성자에서 super() 키워드를 사용합니다. JVM이 자동으로 super()를 작성하므로 작성하는 것은 선택사항입니다. 항상 첫 번째 줄에 써야 합니다. 하위 클래스에서 슈퍼클래스 생성자를 호출하려고 하면 구문 오류가 발생합니다.
자바는 다음을 가지고
통사론:
super(); or super(Parameter List);
감독자(): 이는 인수가 없는 슈퍼클래스의 기본 생성자를 호출합니다.
Java의 유사한 인터페이스
슈퍼(매개변수): 이는 매개변수화된 슈퍼클래스 생성자를 호출합니다.
슈퍼클래스 생성자는 하위클래스에서 상속될 수 없다는 점을 기억하세요. super 키워드를 사용하여 하위 클래스 생성자에서 호출할 수 있습니다.
Java 프로그램을 만들고 상속된 클래스에서 생성자 연결을 구현해 보겠습니다.
생성자Chaining.java
//parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } }
산출: