생성자의 기본문법 <class_name>([<argument_list]){[<statements]}
생성자는 일반함수처럼 기능을 호출하는 것이 아닌 객체를 생성하기 위해 사용되며 new 키워드와 함께 사용한다 ex) new Student();
객체가 생성될때 변수나 상수를 초기화 하거나 다른 초기화 기능을 수행하는 메서드를 호출한다.
생성자는 반환 값이 없고 클래스의 이름과 동일하다
대부분의 생성자는 외부에서 접근 가능하지만, 필요에의해서 private로 선언되는 경우도 있다.
자바에서 객체를 사용할때 항상 생성자를 사용해야함
생성자는 힙 메모리에 인스턴스가 생성이 됨
클래스에는 반드시 적어도 하나 이상의 생성자가 존재하며 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출 할 수 있다.
클래스에 생성
생성자를 하나도 제공하지않으면 기본 생성자가 만들어짐
-> 컴파일러가 생성자 코드를 넣어준다 public Student(){}
매개변수가 없으며 구현부가 없다는것이 특징이다.
메서드명은똑같고 매개변수만 다른경우 오버로딩된것이라고 말함
오버로딩을 제공하는이유는 사용하는쪽에 편의성을 제공하기 위함
변수의 자료형
참조 자료형은 클래스형으로 변수를 선언하는 것이고 기본자료형(int,float,double)은 사용하는 메모리의 크기가 정해져있지만 참조자료형은 클래스에 따라 다르다.
참조자료형 object 형의 객체타입이므로 참조자료형을 사용할때는 해당 변수를 선언을하고 쓸수 없다 즉 참조자료형은 Object형의 객체 타입이므로 생성을 해서 써야한다
(but String의 경우는 예외적으로 생성하지 않고 사용할 수 있다.)
패키지의 역할은 소스의 묶음이라고 생각하면됨
+) private으로선언하지 않고 default로 선언하면 문제점.-> 멤버변수에 막 접근하여(오용) 객체가 잘못사용되는것을 노출하게되고 객체역할에 대해 문제가 될 수 있다.
즉, 객체에 사용되는 멤버변수에서 문제가 될만한 것들을 private 으로 막아주고 클래스 메서드에서 제어를 통해서 객체의 오류를 방지할수잇다.
private으로 선언한 멤버변수를 외부에서 접근하고 싶을때 get/set 메소드를 사용해서 private로 선언된 변수를 접근할수있도록 public으로 제공할수있다.
get() 메서드만 제공하는 경우 read-only필드이다
객체의 멤버변수에 접근제한을 걸면서 오류를 막을수있다 public으로 오픈할건 오픈하고 오용이될만한 값들은 private으로 제한을 걸어야함
즉 객체지향 프로그램에서 정보은닉은 필요한 외부에서 접근 가능한 최소한의 정보를 오픈함으로써 객체의 오류를 방지하고 클라이언트에게 객체가 더 효율적으로 객체를 활용할 수 있도록 해준다.