java
이 자습서에서는 Java 생성자, 해당 유형 및 예제를 통해 사용 방법에 대해 알아봅니다.
Java의 생성자는 클래스의 객체가 생성될 때 호출되는 메소드와 유사합니다.
자바 메소드와 달리 생성자는 클래스와 이름이 같으며 반환 유형이 없습니다. 예를 들어,
class Test { Test() { // constructor body } }
여기, Test()
생성자입니다. 클래스와 이름이 같으며 리턴타입이 없습니다.
권장 자료: 생성자가 값을 반환하지 않는 이유
<시간>
class Main {
private String name;
// constructor
Main() {
System.out.println("Constructor Called:");
name = "Programiz";
}
public static void main(String[] args) {
// constructor is invoked while
// creating an object of the Main class
Main obj = new Main();
System.out.println("The name is " + obj.name);
}
}
출력 :
Constructor Called: The name is Programiz
위의 예에서 Main()
이라는 생성자를 만들었습니다. . 생성자 내에서 name 값을 초기화합니다. 변수.
Main의 객체를 생성하는 문장에 주목하세요. 수업.
Main obj = new Main();
여기서 객체가 생성되면 Main()
생성자가 호출됩니다. 그리고 name의 값은 변수가 초기화됩니다.
따라서 프로그램은 name 값을 인쇄합니다. Programiz
와 같은 변수 .
Java에서 생성자는 3가지 유형으로 나눌 수 있습니다.
메소드와 유사하게 Java 생성자에는 매개변수(인수)가 있을 수도 있고 없을 수도 있습니다.
생성자가 매개변수를 허용하지 않는 경우 인수가 없는 생성자라고 합니다. 예를 들어,
private Constructor() {
// body of the constructor
}
<시간>
class Main {
int i;
// constructor with no parameter
private Main() {
i = 5;
System.out.println("Constructor is called");
}
public static void main(String[] args) {
// calling the constructor without any parameter
Main obj = new Main();
System.out.println("Value of i: " + obj.i);
}
}
출력 :
Constructor is called Value of i: 5
위의 예에서 생성자 Main()
를 만들었습니다. . 여기서 생성자는 매개변수를 허용하지 않습니다. 따라서 인수가 없는 생성자로 알려져 있습니다.
생성자를 private로 선언했음을 주목하세요.
생성자가 선언되면 private
, 클래스 외부에서 액세스할 수 없습니다. 따라서 private 생성자를 사용하여 클래스 외부에서 객체를 생성하는 것은 금지되어 있습니다.
여기서는 같은 클래스 안에 객체를 생성합니다. 따라서 프로그램은 생성자에 액세스할 수 있습니다. 자세한 내용은 Java Implement Private Constructor를 참조하십시오.
그러나 클래스 외부에 객체를 생성하려면 생성자를 public
로 선언해야 합니다. .
class Company {
String name;
// public constructor
public Company() {
name = "Programiz";
}
}
class Main {
public static void main(String[] args) {
// object is created in another class
Company obj = new Company();
System.out.println("Company name = " + obj.name);
}
}
출력 :
Company name = Programiz
권장 자료: 자바 액세스 수정자
<시간>Java 생성자는 하나 이상의 매개변수를 허용할 수도 있습니다. 이러한 생성자를 매개변수화된 생성자(매개변수가 있는 생성자)라고 합니다.
class Main {
String languages;
// constructor accepting single value
Main(String lang) {
languages = lang;
System.out.println(languages + " Programming Language");
}
public static void main(String[] args) {
// call constructor by passing a single value
Main obj1 = new Main("Java");
Main obj2 = new Main("Python");
Main obj3 = new Main("C");
}
}
출력 :
Java Programming Language Python Programming Language C Programming Language
위의 예에서 Main()
이라는 생성자를 만들었습니다. . 여기서 생성자는 단일 매개변수를 사용합니다. 표현에 주목하세요.
Main obj1 = new Main("Java");
여기서는 생성자에 단일 값을 전달합니다. 전달된 인수를 기반으로 언어 변수는 생성자 내부에서 초기화됩니다.
<시간>생성자를 생성하지 않으면 Java 컴파일러는 프로그램 실행 중에 인수가 없는 생성자를 자동으로 생성합니다. 이 생성자를 기본 생성자라고 합니다.
class Main {
int a;
boolean b;
public static void main(String[] args) {
// A default constructor is called
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
출력 :
a = 0 b = false
여기서는 생성자를 만들지 않았습니다. 따라서 Java 컴파일러는 자동으로 기본 생성자를 생성합니다.
기본 생성자는 초기화되지 않은 모든 인스턴스 변수를 기본값으로 초기화합니다.
유형 | 기본값 |
---|---|
boolean | 거짓 |
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
char | \u0000 |
float | 0.0f |
double | 0.0d |
object | 참조 null |
위 프로그램에서 변수 a 및 b 기본값 0으로 초기화됩니다. 및 false
각각.
위의 프로그램은 다음과 같습니다.
class Main {
int a;
boolean b;
// a private constructor
private Main() {
a = 0;
b = false;
}
public static void main(String[] args) {
// call the constructor
Main obj = new Main();
System.out.println("Default Value:");
System.out.println("a = " + obj.a);
System.out.println("b = " + obj.b);
}
}
프로그램의 출력은 예제 5와 동일합니다.
<시간>int
변수는 0
로 초기화됩니다. abstract
일 수 없습니다. 또는 static
또는 final
.Java 메소드 오버로딩과 유사하게 매개변수가 다른 두 개 이상의 생성자를 생성할 수도 있습니다. 이것을 생성자 오버로딩이라고 합니다.
class Main {
String language;
// constructor with no parameter
Main() {
this.language = "Java";
}
// constructor with a single parameter
Main(String language) {
this.language = language;
}
public void getName() {
System.out.println("Programming Langauage: " + this.language);
}
public static void main(String[] args) {
// call constructor with no parameter
Main obj1 = new Main();
// call constructor with a single parameter
Main obj2 = new Main("Python");
obj1.getName();
obj2.getName();
}
}
출력 :
Programming Language: Java Programming Language: Python
위의 예에는 두 개의 생성자가 있습니다. Main()
및 Main(String language)
. 여기서 두 생성자는 변수 언어의 값을 서로 다른 값으로 초기화합니다.
객체 생성 시 전달된 매개변수에 따라 다른 생성자가 호출되고 다른 값이 할당됩니다.
다른 생성자에서 하나의 생성자를 호출하는 것도 가능합니다. 자세한 내용은 Java Call One Constructor from another를 참조하십시오.
참고 :this
을 사용했습니다. 클래스의 변수를 지정하는 키워드. this
에 대해 자세히 알아보려면 키워드, Java 이 키워드를 방문하십시오.
java
자바 컬렉션 인터페이스 이 튜토리얼에서는 Java Collection 인터페이스와 그 하위 인터페이스에 대해 알아볼 것입니다. Collection interface는 Java 컬렉션 프레임워크의 루트 인터페이스입니다. 이 인터페이스의 직접적인 구현은 없습니다. 그러나 List와 같은 하위 인터페이스를 통해 구현됩니다. , Set , 및 Queue . 예를 들어, ArrayList 클래스는 List를 구현합니다. Collection의 하위 인터페이스인 인터페이스 인터페이스. 컬렉션의 하위 인터페이스 위에서 언급했듯이 C
자바 목록 이 자습서에서는 Java의 List 인터페이스와 해당 메서드에 대해 알아봅니다. 자바에서 List 인터페이스는 요소를 순차적으로 저장하고 액세스할 수 있도록 하는 정렬된 컬렉션입니다. Collection 확장 인터페이스. 목록을 구현하는 클래스 List 이후 인터페이스이므로 개체를 만들 수 없습니다. List의 기능을 사용하려면 인터페이스에서 다음 클래스를 사용할 수 있습니다. 배열 목록 링크드리스트 벡터 스택 이 클래스는 Collections 프레임워크에 정의되어 있으며 List 인터페이스. 목록은 어