생성자 오버로딩

클래스 내에서 사용하는 생성자는 오버로딩이라는 방식을 통해 사용자가 다양한 방식으로 클래스를 초기화 할 수 있도록 지원하고 있습니다.

 

유의할 부분은 생성자 오버로딩시 [매개변수의 타입, 개수, 순서]를 다르게 해줌으로서 생성자를 구분 할 수 있는 근거를 만들어야합니다.

 

몇개의 샘플을 보겠습니다.

 

위와같이 Box 라는 이름의 클래스를 만들어 주었습니다.

 

또한 4개의 생성자를 만들어 주었습니다.

 

하지만, 기본적으로 아래와 같은 녀석이 숨어있습니다.

 

 

기본생성자라는 이름으로 불리는 녀석으로 아무런 매개변수를 갖고있지 않는 녀석으로 단순히 new함수를 통해 클래스를 초기화하는 역할만 수행하는 녀석입니다.

 

 

따라서 위 코드는 총 5개의 생성자(기본생성자 포함)를 갖고있습니다.

 

이 생성자들은 아래와 같은 방식으로 호출되어 클래스 내 필드를 초기화하게됩니다.

 

 

  1. 2021.01.10 17:39

    비밀댓글입니다

  2. 자바라네 2021.01.27 23:02

    안녕하세요. 글 잘 읽었습니다 ^^
    한 가지 오류가 있어 댓글 남겨요.

    기본생성자는 클래스 내부에 명시적으로 아무 생성자도 선언하지 않았을 때만 자동 생성되고, 매개변수가 있는 생성자가 존재할 경우 기본생성자는 자동 생성되지 않습니다.

    참고하시면 좋을 것 같아요 ^^

1. For 반복문

Java에서는 두 가지 형태의 for 반복문을 사용할 수 있습니다.

 

하나는 c언어에서 사용했던것과 같은 방식, 다른 하나는 파이썬의 반복문과 같은 배열값을 통으로 넣는 반복문입니다.

 

하나씩 확인해보겠습니다.

 

 

int[] x = {1,2,3};

 

이라는 배열의 값을 하나씩 출력하는 코드를 반복문을 사용하여 만들어보겠습니다.

 

 

먼저 첫번째 방식인 C언어 느낌의 반복문입니다.

 

 

 

 

 

다음은 [향상된 for문]입니다.

 

 

두 가지 방식을 비교해보면 아래의 모습이 훨씬 간단한 것을 볼 수 있습니다.

 

아래 반복문은 x라는 배열의 값을 For문이 실행될 때 마다 하나씩 v에 넣어주는 형태로 작동합니다.

 

때문에 v의 값은 x라는 배열의 값이 들어갈 수 있는 타입으로 선언해 주어야 합니다.

 

간단하네요.

1. 배열의 복사

리스트와 다르게 배열은 처음 초기화된 크기를 변경 할 수 없다는 단점을 갖고있습니다.

때문에 기존에 존재했던 배열의 크기가 작아 추가 공간이 필요하게 된다면, 기존보다 큰 배열을 생성하고 거기에 기존에 데이터를 복사해 넣어줘야 할 필요가 있습니다.

 

이를위해 단순히 반복문을 활용하여 하나씩 데이터를 넣어줄 수도 있지만, 상당히 귀찮은 일이 아닐 수 없습니다.

 

이를 쉽게 해주는 함수가 존재합니다.

 

System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length);

// Ststem.arraycopy( 배열 A, 복사 시작점, 배열 B, 붙여넣을 시작점, 복사할 길이 );

// 배열A를 배열B에 복사

 

실행결과

 

위의 코드를 보게되면 arr1을 arr2의 1번 index부터 복사한것을 볼 수 있습니다.

 

+ Recent posts