아시다시피 클래스는 객체에 대한 청사진을 제공합니다. 클래스에서 개체를 만듭니다. CreateObjectDemo
프로그램에서 가져온 다음 각 문은 개체를 만들고 변수에 할당합니다.
첫 번째 줄은 Point
클래스와 두 번째 및 세 번째 줄은 각각 Rectangle
클래스의 개체를 만듭니다.
각 문은 세 부분으로 구성됩니다. (아래에서 자세히 설명) :
- 선언 : 굵게 표시된 코드는 모두 변수 이름과 개체 유형을 연결하는 변수 선언입니다.
- 인스턴스화 : 새 키워드 객체를 생성하는 Java 연산자입니다.
- 초기화 : new 연산자 뒤에는 새 객체를 초기화하는 생성자를 호출합니다.
변수 선언 객체를 참조하는 방법
이전에 변수를 선언하는 방법을 배웠습니다.
type name;
이렇게하면 유형이 유형 인 데이터를 참조하기 위해 이름을 사용할 것임을 컴파일러에 알립니다. 기본 변수를 사용하면이 선언은 변수에 대한 적절한 양의 메모리를 예약합니다.
또한 참조 변수를 자체 줄에 선언 할 수도 있습니다. 예 :
Point originOne;
originOne
를 이렇게 선언하면 값이 개체가 실제로 만들어지고 할당 될 때까지 결정되지 않습니다. 단순히 참조 변수를 선언하는 것은 객체를 생성하지 않습니다. 이를 위해 다음 섹션에 설명 된대로 new
연산자를 사용해야합니다. 코드에서 개체를 사용하기 전에 originOne
에 개체를 할당해야합니다. 그렇지 않으면 컴파일러 오류가 발생합니다.
현재 개체를 참조하지 않는이 상태의 변수는 다음과 같이 설명 할 수 있습니다 (변수 이름, originOne
). , 없음을 가리키는 참조) :
클래스 인스턴스화
new 연산자는 새 객체에 메모리를 할당하고 해당 메모리에 대한 참조를 반환하여 클래스를 인스턴스화합니다. new 연산자는 객체 생성자도 호출합니다.
new 연산자에는 생성자 호출이라는 단일 접미사 인수가 필요합니다. 생성자의 이름은 인스턴스화 할 클래스의 이름을 제공합니다.
새 연산자는 자신이 생성 한 객체에 대한 참조를 반환합니다. 이 참조는 일반적으로 다음과 같은 적절한 유형의 변수에 할당됩니다.
new 연산자가 반환 한 참조는 변수에 할당되어야합니다. 표현식에서 직접 사용할 수도 있습니다. 예 :
int height = new Rectangle().height;
이 설명은 다음 섹션에서 설명합니다.
객체 초기화
다음은 Point 클래스의 코드입니다.
public class Point { public int x = 0; public int y = 0; //constructor public Point(int a, int b) { x = a; y = b; }}
이 클래스에는 단일 생성자가 포함되어 있습니다. 생성자 선언은 클래스와 동일한 이름을 사용하고 반환 유형이 없기 때문에 생성자를 인식 할 수 있습니다. Point 클래스의 생성자는 코드에서 선언 된대로 두 개의 정수 인수를 사용합니다 (int a, int b). 다음 문은 해당 인수의 값으로 23과 94를 제공합니다.
Point originOne = new Point(23, 94);
이를 실행 한 결과 다음 그림에서 설명을 확인할 수 있습니다.
다음은 4 개의 생성자를 포함하는 Rectangle 클래스에 대한 코드입니다.
각 생성자를 사용하면 기본 유형과 참조 유형을 모두 사용하여 사각형의 원점, 너비 및 높이에 대한 초기 값을 제공 할 수 있습니다. 클래스에 여러 생성자가있는 경우 서로 다른 서명이 있어야합니다. Java 컴파일러는 t를 구별합니다. 인수의 수와 유형에 따라 생성자입니다. Java 컴파일러가 다음 코드를 발견하면 Point 인수와 두 개의 정수 인수를 필요로하는 Rectangle 클래스의 생성자를 호출합니다.
Rectangle rectOne = new Rectangle(originOne, 100, 200);
이것은 origin
를 originOne
으로 초기화하는 Rectangle
“의 생성자 중 하나를 호출합니다. 또한 생성자는 width
를 100으로, height
를 200으로 설정합니다.이제 동일한 Point 개체에 대한 두 개의 참조가 있습니다. 다음 그림과 같이 개체에 여러 참조가있을 수 있습니다.
다음 코드 줄은 두 개의 정수 인수가 필요한 Rectangle
생성자를 호출합니다. 너비 및 높이 값. 생성자 내에서 코드를 검사하면 x 및 y 값이 0으로 초기화 된 새 Point 객체가 생성되는 것을 볼 수 있습니다.
Rectangle rectTwo = new Rectangle(50, 100);
다음 문에서 사용되는 Rectangle 생성자는 “인수를 사용하지 않으므로 인수없는 생성자”라고합니다.
Rectangle rect = new Rectangle();
모든 클래스에는 하나 이상의 생성자가 있습니다. 클래스가 명시 적으로 선언하지 않으면 Java 컴파일러는 기본 생성자라고하는 인수없는 생성자를 자동으로 제공합니다. 이 기본 생성자는 상위 클래스의 인수없는 생성자를 호출하거나 클래스에 다른 상위가없는 경우 Object
생성자를 호출합니다. 상위에 생성자가없는 경우 (Object
에 하나가있는 경우) 컴파일러는 프로그램을 거부합니다.