티스토리 뷰

포스팅에 앞서 내용이 틀릴 수 있습니다.
해당 부분 지적 감사히 받습니다.

 

생성자란?

자바 생성자에 대해서 알아보자.

 

생성자는 간단히 메서드라고 생각하면 된다.

근데 이제 리턴값이 없고, 접근제한자가 없다.

 

생성자는 반드시 Class와 이름이 같아야 하며, 객체 호출과 동시에 가장 먼저 실행된다

 

또한 메소드이기 때문에, 생성자 오버로딩(OverLoading) 도 가능하다.

 

예시 코드

public class Child{
    String name ;
       int    age ;
     Child(){    
           this("홍길동", 28);
       }
   
       Child(String name){
           this(name, 0);
       }
   
       Child(String name, int age){
           this.name = name;
           this.age = age;
       }
   }

 

 

원래라면 자바에서 Class를 생성할 때, 반드시 하나의 생성자가 존재하여야만 한다.

 

하지만 실제로 코딩을 해보면 생성자를 명시하지 않아도 오류가 생기지 않는데, 이는 컴파일러가 제공하는 기본 생성자가 있기 때문이다.

 

기본 생성자의 구조는

test() {} 이다.

 

다만 생성자가 형태를 고려하지 않고 하나라도 생성이 되어있으면 컴파일러가 기본 생성자를 만들지 않는다.

 

따라서 test(int x){}라는 생성자를 명시하였다면,

 

이 인스턴스를 불러올 때, 기본 생성자가 없기에 컴파일 오류가 발생하게 된다.

 

예시 코드

class test {
    int value;
   
        test(int x){ // 매개변수가 있는 생성자
            value = x;
        }
}

public class Constructor {
   
        public static void main(String[] args){
        test t = new test(16); // 존재하는 생성자가 인스턴스를 받기에 반드시 존재하는 매개변수 갯수, 타입에 맞게 선언해줘야 한다.
        System.out.println(t.value); //출력 값 = 16
    }
}

 

또한 상속을 받을 때에, 생성자가 있는 Class를 상속 받았다면, 반드시 자식 Class에 생성자를 실행시켜 부모 Class를 호출하게 만들어야 한다.

 

다음 시간에는 자바에서 static을 알아보도록 하자

 

 

 

댓글