생성자 오버로딩 Java

생성자 오버로딩이란 무엇입니까? Java?

Java 생성자 오버로딩은 클래스가 매개변수 목록이 다른 생성자를 얼마든지 가질 수 있는 기술입니다. 컴파일러는 목록의 매개변수 수와 해당 유형을 고려하여 이러한 생성자를 구별합니다.

클래스 Account에 대한 유효한 생성자의 예는 다음과 같습니다.

Account(int a);
Account (int a,int b);
Account (String a,int b);

예제 2: 생성자 오버로딩을 이해하려면 Java

단계 1) 편집기에 코드를 입력하세요.

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

단계 2) 코드를 저장하고, 컴파일하고 실행하세요.

단계 3) 오류 =?. 다음 단계로 진행하기 전에 오류를 시도하고 디버그해 보세요. Java 생성자 오버로딩

단계 4) 모든 클래스에는 기본값이 있습니다. 생성자 Java. 기본 오버로드된 생성자 Java 을 통한 클래스 데모 is 데모(). 이 생성자를 제공하지 않는 경우 컴파일러는 이를 생성하고 변수를 기본값으로 초기화합니다. 예제 1에 표시된 대로 이 기본 생성자를 재정의하고 변수를 원하는 값으로 초기화하도록 선택할 수 있습니다.

그러나 Demo(int a)와 같은 매개변수화된 생성자를 지정하고 기본 생성자를 사용하려는 경우 Java Demo()를 지정하는 것은 필수입니다.

즉, 오버로딩 생성자가 Java 재정의되었으며 기본 생성자를 사용하려고 합니다. Java, 이를 지정해야 합니다.

단계 5) 4-8행의 주석 처리를 해제합니다. 코드를 저장하고, 컴파일하고, 실행하세요.

왜 생성자 오버로딩이 필요한가요? Java?

생성자 오버로딩 Java 클래스에 여러 생성자를 허용하며, 각각 다른 매개변수 목록을 갖습니다. 유연성을 높이고 코드 효율성을 개선합니다.

  • 객체 생성의 유연성: 생성자 오버로딩을 사용하면 매개변수의 개수나 유형에 따라 다양한 방법으로 객체를 초기화할 수 있습니다.
  • 코드 재사용성: this() 키워드를 사용하여 한 생성자에서 다른 생성자를 호출하여 생성자 논리를 재사용할 수 있습니다.
  • 향상된 가독성: 오버로드된 생성자는 다양한 초기화 요구 사항에 맞는 특정 생성자 옵션을 제공하여 코드를 더 직관적으로 만드는 데 도움이 됩니다.
  • 기본 및 사용자 정의 초기화: 생성자 오버로딩을 사용하면 기본 객체와 사용자가 초기화한 객체를 쉽게 생성할 수 있습니다.

자주 묻는 질문

건설자 새로 생성된 객체를 초기화하는 데 사용되며 해당 객체에 메모리가 할당된 직후에 호출되는 특수 메서드입니다. 객체 생성 시 객체를 원하는 값이나 기본값으로 초기화하는 데 사용할 수 있습니다. 코더가 클래스에 대한 생성자를 작성하는 것은 필수는 아닙니다.

클래스에 대해 사용자 정의 생성자가 제공되지 않으면 컴파일러는 멤버 변수를 기본값으로 초기화합니다.

  • 숫자 데이터 유형은 0으로 설정됩니다.
  • char 데이터 유형이 널 문자('\0')로 설정되었습니다.
  • 참조 변수가 null로 설정되었습니다.

  1. 그것은 같은 이름 수업으로는
  2. 다음과 같은 값도 반환해서는 안 됩니다. 무효화

예제 1: 첫 번째 생성자를 만듭니다. Java

단계 1) 다음 생성자 프로그램을 입력하세요. Java 편집자.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

단계 2) 생성자 프로그램을 저장, 실행 및 컴파일합니다. Java 그리고 출력을 관찰하세요.

예상 출력 :

Inside Constructor
Value1 === 10
Value2 === 20

자식이 기본 클래스를 확장하는 시나리오를 생각해 보세요. 자식 클래스의 객체가 생성될 때마다 부모 클래스의 생성자가 먼저 호출됩니다. 이것은 ... 불리운다 생성자 체인.

예 3 : 생성자 연결을 이해하려면

단계 1) 다음 코드를 편집기에 복사하세요.

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

단계 2) 코드를 실행합니다. 생성자 체이닝으로 인해 자식 클래스 DemoChild의 객체가 생성되면 부모 클래스의 생성자 Demo()가 먼저 호출되고 나중에 자식의 생성자 DemoChild()가 생성됩니다.

예상 출력 :

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

단계 3) 상위 클래스 Demo의 생성자가 재정의되는 것을 볼 수 있습니다. 자식 객체가 생성될 때 기본 생성자 Demo() 대신 재정의된 생성자 Demo(int a)를 호출하려면 어떻게 해야 합니까?

이러한 경우 키워드를 사용할 수 있습니다. "감독자" 상위 클래스의 재정의된 생성자를 호출합니다.

통사론:-

super();
--or--
super(parameter list);

예: 생성자가 다음과 같은 경우 데모(문자열 이름,int a), 당신은 지정합니다 감독자("Java",5). 사용하는 경우 키워드는 super는 코드의 첫 번째 줄에 있어야 합니다. 하위 클래스의 생성자에서.

단계 4) 26번 줄의 주석 처리를 해제하고 코드를 실행하세요. 출력을 관찰합니다.

출력:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4