객체 생성

아시다시피 클래스는 객체에 대한 청사진을 제공합니다. 클래스에서 개체를 만듭니다. CreateObjectDemo 프로그램에서 가져온 다음 각 문은 개체를 만들고 변수에 할당합니다.

첫 번째 줄은 Point 클래스와 두 번째 및 세 번째 줄은 각각 Rectangle 클래스의 개체를 만듭니다.

각 문은 세 부분으로 구성됩니다. (아래에서 자세히 설명) :

  1. 선언 : 굵게 표시된 코드는 모두 변수 이름과 개체 유형을 연결하는 변수 선언입니다.
  2. 인스턴스화 : 새 키워드 객체를 생성하는 Java 연산자입니다.
  3. 초기화 : 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);

이것은 originoriginOneRectangle “의 생성자 중 하나를 호출합니다. 또한 생성자는 width를 100으로, height를 200으로 설정합니다.이제 동일한 Point 개체에 대한 두 개의 참조가 있습니다. 다음 그림과 같이 개체에 여러 참조가있을 수 있습니다.

다음 코드 줄은 두 개의 정수 인수가 필요한 Rectangle 생성자를 호출합니다. 너비 및 높이 값. 생성자 내에서 코드를 검사하면 x 및 y 값이 0으로 초기화 된 새 Point 객체가 생성되는 것을 볼 수 있습니다.

Rectangle rectTwo = new Rectangle(50, 100);

다음 문에서 사용되는 Rectangle 생성자는 “인수를 사용하지 않으므로 인수없는 생성자”라고합니다.

Rectangle rect = new Rectangle();

모든 클래스에는 하나 이상의 생성자가 있습니다. 클래스가 명시 적으로 선언하지 않으면 Java 컴파일러는 기본 생성자라고하는 인수없는 생성자를 자동으로 제공합니다. 이 기본 생성자는 상위 클래스의 인수없는 생성자를 호출하거나 클래스에 다른 상위가없는 경우 Object 생성자를 호출합니다. 상위에 생성자가없는 경우 (Object에 하나가있는 경우) 컴파일러는 프로그램을 거부합니다.

Write a Comment

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다