1) 필드(field)
2) 메서드(method)
3) 생성자(constructor)
4) 내부 클래스(inner class)
5) this 키워드, this() 메서드
객체를 생성할 때 호출하는 매서드 비슷한 것
new 키워드와 함께 호출
Person p1 = new Person();
기본 생성자
파라미터가 있는 생성자
/**
* 생성자 constructor
* 생성자가 하나도 없는 경우 컴파일러가 기본 생성자 추가
* 생성자가 하나라도 있는 경우 컴파일러가 기본 생성자 추가 X
* this : 나 자신의객체를 가리키는 참조 변수
* 모든 메서드, 모든 생성자에서 가용할 수 있는 지역변수
* this() : 나 말고 또 다른 생성자 호출 -> 코드의 첫번째 줄에만 사용 가능
* this는 객체에 대한 참조 => static 영역에서 this 사용 불가
* 생성자는 주소를 리턴하므로 리턴 타입을 명시하면 안됨
*
*/
public class DefaultPerson {
String name;
int age;
boolean isHungry;
static { //static 초기화 블록
System.out.println("static 초기화 블록");
}
{
System.out.println("초기화 블록");
//초기화블록
}
// public DefaultPerson() {} -- 생략된 기본 생성자
DefaultPerson(String name, int age) {
this.name = name; //this : 전역변수를 가리킴
this.age = age;
System.out.println("hello");
} //명시된 생성자
DefaultPerson() {
this("신원철",25); // 또다른 생성자 호출
System.out.println("hi");
} //직접 기본생성자 선언
public static void main(String[] args) {
DefaultPerson person = new DefaultPerson();
person.name = "홍길동";
person.age = 10;
person.isHungry = false;
}
}
생성자는 우클릭 -> source -> constructor로 만들 수 있음
단축키
alt
+ shift
+ s
+ o
참고로 getter / setter는
단축키 alt
+ shift
+ s
+ r
{}를 이용해 내부에 실행 코드 작성
이름이 없으므로 별도 호출 불가 / 파라미터를 받을 수도 없음
초기화 블록의 종류
- 클래스 초기화 블록
- 인스턴스 초기화 블록