산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java의 생성자 오버로딩:프로그램의 정의 및 예제

자바에서 생성자란 무엇입니까?

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

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

이 튜토리얼에서는 배우게 될 것입니다-

자바 생성자 생성 규칙

  1. 동일한 이름이 있습니다. 클래스로
  2. 무효도 아닌 값을 반환해서는 안 됩니다.

예시 1 :Java로 첫 번째 생성자 만들기

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

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

자바에서 생성자 오버로딩

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 데모()입니다. . 이 생성자를 제공하지 않으면 컴파일러가 생성자를 생성하고 변수를 기본값으로 초기화합니다. 예제 1과 같이 이 기본 생성자를 재정의하고 변수를 원하는 값으로 초기화하도록 선택할 수 있습니다.

그러나 Demo(int a)와 같은 매개변수화된 생성자를 지정하고 기본 생성자 Java Demo()를 사용하려면 반드시 지정해야 합니다.

즉, Java의 오버로딩 생성자가 재정의되고 기본 생성자 Java를 사용하려는 경우 해당 생성자를 지정해야 합니다.

5단계) 4-8번 줄의 주석을 제거합니다. 코드를 저장, 컴파일 및 실행합니다.

생성자 연결

기본 클래스가 자식에 의해 확장되는 시나리오를 고려하십시오. 자식 클래스의 객체가 생성될 때마다 부모 클래스의 생성자가 먼저 호출됩니다. 이것을 생성자 연결이라고 합니다.

예시 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”를 사용할 수 있습니다. 상위 클래스의 재정의된 생성자를 호출합니다.

구문:-

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

예: 생성자가 Demo(String Name,int a)와 같은 경우 , super("Java",5)를 지정합니다. . 사용되는 경우 키워드 super는 코드의 첫 번째 줄이어야 합니다. 자식 클래스의 생성자에서.

4단계) 26행의 주석을 제거하고 코드를 실행합니다. 출력을 관찰하십시오.

출력:

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

java

  1. C# 생성자 오버로딩
  2. 자바 Hello World 프로그램
  3. 자바 생성자
  4. 자바 열거형 생성자
  5. 하위 문자열 및 예제가 있는 Java 문자열 indexOf() 메서드
  6. Java String compareTo() 메서드:예제와 함께 사용하는 방법
  7. Java의 정적 변수:정적 블록 및 메서드란 [예시]
  8. 소수를 확인하는 자바 프로그램
  9. Java에서 1에서 100까지의 소수를 인쇄하는 프로그램
  10. Java에서 Char를 문자열로 변환하는 방법(예제)