생성자 오버로딩 Java
⚡ 스마트 요약
생성자 오버로딩 Java 이 기능을 사용하면 클래스가 매개변수 목록에 따라 서로 다른 여러 생성자를 선언할 수 있으므로 개발자는 유연한 객체 초기화, this()를 통한 깔끔한 코드 재사용, 인스턴스화 시 기본값 또는 사용자 지정 값이 필요할 때 예측 가능한 동작을 구현할 수 있습니다.
생성자 오버로딩이란 무엇인가요? Java?
생성자 오버로딩 Java 클래스에 매개변수 목록이 서로 다른 여러 생성자를 선언하는 기법입니다. 컴파일러는 매개변수의 개수와 데이터 타입을 분석하여 이러한 생성자들을 구분합니다.
클래스에 대한 유효한 생성자의 예 계정 아래에 표시됩니다:
Account(int a); Account (int a,int b); Account (String a,int b);
생성자 오버로딩이 필요한 이유는 무엇일까요? Java?
생성자 오버로딩 Java 클래스 내에 여러 개의 생성자를 허용하고 각 생성자가 서로 다른 매개변수 목록을 갖도록 함으로써 유연성과 코드 효율성을 향상시킵니다.
- 객체 생성의 유연성: 생성자 오버로딩을 사용하면 매개변수의 개수나 유형에 따라 다양한 방식으로 객체를 초기화할 수 있습니다.
- Code 재사용 성: 한 생성자에서 다른 생성자를 호출하여 생성자 로직을 재사용할 수 있습니다. 이() 예어.
- 향상된 가독성: 오버로드된 생성자는 다양한 초기화 요구 사항에 대한 특정 옵션을 제공함으로써 코드를 더욱 직관적으로 만들어 줍니다.
- 기본 및 사용자 정의 초기화: 생성자 오버로딩을 사용하면 기본 초기화 객체와 사용자 정의 초기화 객체를 모두 쉽게 생성할 수 있습니다.
예시: 생성자 오버로딩 Java
다음 예제는 생성자 오버로딩을 보여줍니다. Java 클래스 이름을 사용하여 Rescale과 함께 비즈니스를 가속화하는 방법에 대해 알아보세요..
단계 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. 기본 생성자는 클래스 데모 is 데모()만약 제공하지 않으면 컴파일러가 자동으로 생성하고 변수를 기본값으로 초기화합니다.
하지만 다음과 같이 매개변수가 있는 생성자를 지정하면 데모(int a) 그리고 기본 설정을 사용하고 싶습니다. 데모()이는 명시적으로 신고해야 합니다.
단계 5) 코드의 4~8번째 줄의 주석을 해제한 다음 프로그램을 저장, 컴파일 및 다시 실행하여 동작 변경 사항을 확인하십시오.
생성자 체이닝 Java
자식이 기본 클래스를 확장하는 시나리오를 생각해 보세요. 자식 클래스의 객체가 생성될 때마다 부모 클래스의 생성자가 먼저 호출됩니다. 이것은 ... 불리운다 생성자 체이닝.
예: 생성자 오버로딩을 사용한 생성자 체이닝을 이해하려면 Java
단계 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) 코드를 실행하세요. 생성자 체이닝으로 인해 자식 클래스의 객체가 생성될 때 데모차일드 생성자가 생성됩니다. 데모() 부모 클래스의 생성자가 먼저 호출됩니다. 데모차일드() 다음으로 아이가 달려갑니다.
예상 출력 :
Inside 1st Parent Constructor Inside the Constructor of Child Value1 === 1 Value2 === 2 Value1 === 3 Value2 === 4
단계 3) 부모 생성자를 살펴보면 알 수 있습니다. 데모() 기본적으로 실행됩니다. 오버로드된 생성자를 호출하려면 데모(int a) 대신 키워드를 사용하세요. "감독자".
구문 :
super(); --or-- super(parameter list);
예: 부모 생성자가 다음과 같으면 데모(문자열 이름, 정수 a), 당신은 지정합니다 감독자("Java",5). 사용하는 경우 키워드는 감독자 이 코드는 자식 클래스의 생성자에서 첫 번째 줄에 있어야 합니다.
단계 4) 26번째 줄의 주석을 해제하고 코드를 실행하세요. 출력 결과를 확인하세요.
출력:
Inside 2nd Parent Constructor Inside the Constructor of Child Value1 === 5 Value2 === 0 Value1 === 3 Value2 === 4

