생성자
클래스를 사용하여 인스턴스(객체) 생성 시 new 연산자로 자동으로 호출되어 필드(변수)를 초기화하는 역할을 함.
== 인스턴스를 초기화 할 때나 인스턴스를 만들 때 작업을 시작한다.
매서드와 유사하게 생겼지만, 리턴타입을 기술하지 않고 생성자 이름이 클래스와 동일하다는 차이점이 있다.
공통점은 메서드처럼 호출되어야만 실행 가능하다. 객체 생성 시 호출함.
그리고 혹여 개발자가 생성자를 하나도 생성하지 않은 경우, 자바 컴파일러에 의해 기본 생성자가 자동으로 형성.
반대로 말하면 하나라도 생성될 경우에는 기본 생성자는 자동으로 생성되지 않는다
생성자의 목적.
-필드를 선언할 때 초기값을 주게 되면 동일한 클래스로부터 생성되는 객체는 모두 같은 데이터를 가진다
=> 객체 생성 시점부터 원하는 초기값을 설정하기 위해 생성자를 사용한다.
인스턴스 초기화(=멤버변수 초기화)
[접근제한자] 클래스명([매개변수...]) {
// 객체 생성 시 호출되서 수행할 코드
}
Person p = new Person(){ <= Person() 이 생성자를 호출하는 기능을 함
System.out.println("이름 : " + p.name);
System.out.println("나이 : " + p.age);
}
//Person 클래스 생성
class Person {
String name;
int age;
}
//Person 생성자 정의
public Person(){
name = "홍길동";
age = 100;
}
파라미터 생성자(매개변수 생성자)
파라미터를 갖는 메서드와 동일하게 소괄호 안에 매개변수를 전달받는 생성자다.
주로, 초기값으로 가질 데이터를 외부로 부터 전달받아서 멤버변수에 전달받은 값을 초기화(대입)하는 용도로 사용됨
주의할 점은 만약 파라미터를 전달받는 생성자가 정의될 경우에는
자바 컴파일러가 기본 생성자를 자동으로 만들지 않아서, 기본 생성자를 호출할 경우 오류가 발생하게 된다.
//인스턴스
Student st = new Student("홍길동",50);
System.out.println("이름" + st.name);
System.out.println("나이" + st.age);
//클래스 정의
class Student{
int age;
String name;
//생성자 정의
public Student(String newName, int Age){
name = newName;
age = Age;
}
}
생성자 자동 단축기
shift + alt + s ++ o <- 윈도우
맥에서는
command + option + s ++ o
'develop > Java' 카테고리의 다른 글
출력 메서드(System.out.p---) 분류(?) (0) | 2021.02.16 |
---|---|
접근제한자, 메서드 오버로딩 (0) | 2021.02.09 |
객체지향 - (1) (1) | 2021.02.08 |
메소드 method - (2) (0) | 2021.02.04 |
메소드 method -(1) (0) | 2021.02.03 |