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

Java 생성자 마스터하기: 종류, 사용법, 실전 예제

Java 생성자

이 튜토리얼에서는 Java 생성자, 종류, 예제를 통해 사용법을 배웁니다.

생성자란?

Java에서 생성자는 클래스의 객체가 생성될 때 호출되는 메서드와 유사합니다.

Java 메서드와 달리 생성자는 클래스와 같은 이름을 가지며 반환 타입이 없습니다. 예:

class Test {
    Test() {
        // 생성자 본문
    }
}

여기서 Test()는 생성자입니다. 클래스와 같은 이름을 가지며 반환 타입이 없습니다.

추천 읽기: 생성자가 값을 반환하지 않는 이유


예제 1: Java 생성자

class Main {
    private String name;
    // 생성자
    Main() {
        System.out.println("생성자 호출됨:");
        name = "Programiz";
    }
    public static void main(String[] args) {
        // Main 클래스 객체 생성 시 생성자 호출
        Main obj = new Main();
        System.out.println("이름은 " + obj.name);
    }
}

출력:

생성자 호출됨:
이름은 Programiz

위 예제에서 Main()이라는 생성자를 생성했습니다. 생성자 내부에서 name 변수 값을 초기화합니다.

객체 생성 문장을 주목하세요.

Main obj = new Main();

여기서 객체가 생성되면 Main() 생성자가 호출되고 name 변수 값이 초기화됩니다.

따라서 프로그램은 name 변수 값을 Programiz로 출력합니다.


생성자 종류

Java에서 생성자는 3가지 유형으로 나뉩니다:

  1. 인수 없는 생성자(No-Arg Constructor)
  2. 매개변수 있는 생성자(Parameterized Constructor)
  3. 기본 생성자(Default Constructor)

1. Java 인수 없는 생성자

메서드와 마찬가지로 Java 생성자는 매개변수(인수)가 있을 수도 없을 수도 있습니다.

생성자가 매개변수를 받지 않으면 인수 없는 생성자라고 합니다. 예:

private Constructor() {
    // 생성자 본문
}

예제 2: Java private 인수 없는 생성자

class Main {
    int i;
    // 매개변수 없는 생성자
    private Main() {
        i = 5;
        System.out.println("생성자 호출됨");
    }
    public static void main(String[] args) {
        // 매개변수 없이 생성자 호출
        Main obj = new Main();
        System.out.println("i 값: " + obj.i);
    }
}

출력:

생성자 호출됨
i 값: 5

위 예제에서 Main() 생성자를 생성했습니다. 여기서는 매개변수를 받지 않으므로 인수 없는 생성자입니다.

생성자가 private으로 선언된 것을 주목하세요.

생성자가 private으로 선언되면 클래스 외부에서 접근할 수 없습니다. 따라서 private 생성자를 사용하면 클래스 외부에서 객체 생성이 금지됩니다.

여기서는 같은 클래스 내부에서 객체를 생성하므로 프로그램은 생성자에 접근할 수 있습니다. 더 알아보려면 Java Private 생성자 구현 방문.

그러나 클래스 외부에서 객체를 생성하려면 생성자를 public으로 선언해야 합니다.

예제 3: Java public 인수 없는 생성자

class Company {
    String name;
    // public 생성자
    public Company() {
        name = "Programiz";
    }
}
class Main {
    public static void main(String[] args) {
        // 다른 클래스에서 객체 생성
        Company obj = new Company();
        System.out.println("회사 이름 = " + obj.name);
    }
}

출력:

회사 이름 = Programiz

추천 읽기: Java 접근 한정자


2. Java 매개변수 있는 생성자

Java 생성자는 하나 이상의 매개변수를 받을 수도 있습니다. 이런 생성자를 매개변수 있는 생성자(매개변수 있는 생성자)라고 합니다.

예제 4: 매개변수 있는 생성자

class Main {
    String languages;
    // 단일 값 받는 생성자
    Main(String lang) {
        languages = lang;
        System.out.println(languages + " 프로그래밍 언어");
    }
    public static void main(String[] args) {
        // 생성자 호출 시 단일 값 전달
        Main obj1 = new Main("Java");
        Main obj2 = new Main("Python");
        Main obj3 = new Main("C");
    }
}

출력:

Java 프로그래밍 언어
Python 프로그래밍 언어
C 프로그래밍 언어

위 예제에서 Main()이라는 생성자를 생성했습니다. 여기서는 생성자가 단일 매개변수를 받습니다. 다음 표현식을 주목하세요:

Main obj1 = new Main("Java");

여기서 생성자에 단일 값을 전달합니다. 전달된 인수에 따라 생성자 내부에서 language 변수가 초기화됩니다.


3. Java 기본 생성자

생성자를 만들지 않으면 Java 컴파일러가 프로그램 실행 중에 자동으로 인수 없는 생성자를 생성합니다. 이 생성자를 기본 생성자라고 합니다.

예제 5: 기본 생성자

class Main {
    int a;
    boolean b;
    public static void main(String[] args) {
        // 기본 생성자 호출
        Main obj = new Main();
        System.out.println("기본값:");
        System.out.println("a = " + obj.a);
        System.out.println("b = " + obj.b);
    }
}

출력:

a = 0
b = false

여기서 생성자를 만들지 않았습니다. 따라서 Java 컴파일러가 자동으로 기본 생성자를 생성합니다.

기본 생성자는 초기화되지 않은 인스턴스 변수를 기본값으로 초기화합니다.

타입기본값
booleanfalse
byte0
short0
int0
long0L
char\u0000
float0.0f
double0.0d
object참조 null

위 프로그램에서 변수 a와 b는 각각 기본값 0과 false로 초기화됩니다.

위 프로그램은 다음과 동일합니다:

class Main {
    int a;
    boolean b;
    // private 생성자
    private Main() {
        a = 0;
        b = false;
    }
    public static void main(String[] args) {
        // 생성자 호출
        Main obj = new Main();
        System.out.println("기본값:");
        System.out.println("a = " + obj.a);
        System.out.println("b = " + obj.b);
    }
}

프로그램 출력은 예제 5와 동일합니다.


Java 생성자 중요 사항


Java 생성자 오버로딩

Java 메서드 오버로딩과 유사하게 서로 다른 매개변수를 가진 두 개 이상의 생성자를 만들 수 있습니다. 이를 생성자 오버로딩이라고 합니다.

예제 6: Java 생성자 오버로딩

class Main {
    String language;
    // 매개변수 없는 생성자
    Main() {
        this.language = "Java";
    }
    // 단일 매개변수 생성자
    Main(String language) {
        this.language = language;
    }
    public void getName() {
        System.out.println("프로그래밍 언어: " + this.language);
    }
    public static void main(String[] args) {
        // 매개변수 없는 생성자 호출
        Main obj1 = new Main();
        // 단일 매개변수 생성자 호출
        Main obj2 = new Main("Python");
        obj1.getName();
        obj2.getName();
    }
}

출력:

프로그래밍 언어: Java
프로그래밍 언어: Python

위 예제에서 두 생성자 Main()과 Main(String language)가 있습니다. 둘 다 language 변수 값을 다른 값으로 초기화합니다.

객체 생성 시 전달된 매개변수에 따라 다른 생성자가 호출되고 다른 값이 할당됩니다.

한 생성자에서 다른 생성자를 호출하는 것도 가능합니다. 더 알아보려면 Java 다른 생성자 호출 방문.

참고: 클래스 변수를 지정하기 위해 this 키워드 사용. this 키워드 더 알아보려면 Java this 키워드 방문.

java

  1. C++ 생성자 이해하기: 기본, 매개변수, 복사 생성자 완벽 해설
  2. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  3. Java 주석: 종류, 사용법, 모범 사례
  4. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  5. Java 생성자 마스터하기: 종류, 사용법, 실전 예제
  6. Java String 마스터하기: 생성, 메서드, 모범 사례
  7. Java this 키워드 완벽 가이드: 용도, 생성자, 실전 예제
  8. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  9. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  10. Java Enum 생성자 완벽 해설: 실전 예제로 이해하기