본문 바로가기

두두의 IT

[Java, Kotlin] 생성자

728x90

생성자란?

  • 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행하는 코드
  • 생성자의 이름과 클래스의 이름은 동일해야 함
  • 기본생성자 : 매개변수가 없고 실행코드가 없는 생성자
  • this()
    • 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용하는 메소드(코드)
    • 반드시 생성자의 첫 번째 문장으로 사용되어야 한다.
  • 객체가 생성되는 순간에 자동으로 호출되며 객체에 필요한 초기화를 수행함
  • 한 클래스에서 매개변수가 다른 것이 여러개 작성할 수 있음
  • 리턴 타입이 없음
  • 클래스에 생성자가 하나도 선언되어 있지 않을 경우, 오류가 발생하지 않음

 

Java

//클래스 - 생성자

class ClassName{
	int a;

	ClassName(){   //기본생성자. 클래스의 이름과 같아야 함. 다른 생성자가 없을 때만 생략 가능
								 //생성자는 반환형이 오면 안됨-> 'public void ClassName()' 등으로 쓸 수 없음
		this(1);   //해당 매개변수가 있는 생성자를 호출(int형 매개변수가 하나인 생성자 호출)
							//this는 무조건 첫 번째 줄에 사용
	}
	ClassName(int i){   //매개변수가 있는 생성자
		this a = i;   //매개변수와 멤버변수 이름이 다를 때 this 생략 가능
	}
	int methodName1(){   
		return int값;
	}
}
public class MainClassName{
	static void methodName2(int i){
		System.out.println(i);
	}
	static void methodName2(ClassName cn){   //static 메소드 오버로딩
		System.out.println(cn.a);
		System.out.println(cn.methodName1());
	}
	public static void main(String[] args){
		ClassName cn1 = new ClassName();   //a의 값은 1. 객체를 생성만 해도 내용 처리됨
		cn1.a = 2;   //1이었던 a의 값을 2로 변경

		ClassName cn2 = new ClassName(2);   //a의 값은 2
		
		methodName2(1);
		methodName2(ClassName);
	}
}

Kotlin

constructor

class 클래스명 private constructor() {...}

생성자를 외부에 노출하지 않으려면 private을 이용하여 생성자를 생성합니다.

 

'두두의 IT' 카테고리의 다른 글

[Kotlin] enum class  (0) 2022.04.11
[Java, Kotlin] final / open  (0) 2022.04.11
개발자의 역량  (0) 2022.03.29
개발 언어에 대한 관심 (2020년 기준)  (0) 2022.03.21
함수형 프로그래밍  (0) 2022.03.21