○ 생성자
객체 생성시, 멤버변수를 원하는 값으로 초기화 하기 위한 메소드
생성자가 하나도 없으면, 컴파일러가 컴파일시에 바이너리코드로 기본생성자를 만들어준다.
다른 생성자가 있으면 컴파일러가 제공하는 기본생성자는 자동생성되지 않음
○ 생성자가 호출되는 순서
객체가 생성되고, 기본값으로 초기화 된 이후에 생성자가 호출됨.
1. 객체생성
2. 초기화
3. 생성자호출
4. 변수에 객체 주소값 대입
○ 생성자 오버로딩 규칙
생성자의 매개변수 개수가 다르면 가능
생성자의 매개변수 개수가 같을 때는 매개변수의 자료형이 다르면 가능
○ this
함수의 지역변수와 클래스 객체의 멤버변수 이름이 같은 경우, 혼동을 막기위해서 해당 객체의 멤버변수에 this를 사용한다
○ this()
같은 클래스 내 다른 생성자를 호출할 때 사용.
생성자 코드내에서만 호출가능.
반드시 생성자의 첫번째 문장이 되어야한다.
○ 예제 소스
파일명 : Animal.java
package java0710;
public class Animal {
// 멤버변수
// 문자열 name 정수형 age
String name;
int age;
// 기본생성자
// 동물이름은 "강아지" 나이는 3 으로 초기화
Animal() {
name = "강아지";
age = 3;
}
// name 받는 생성자. 나이는 1
Animal(String name) {
// 지역변수 name과 클래스 객체의 멤버변수 name의 이름이 같으므로,
// 객체의 멤버변수 name으로 지정하기위해 this.을 사용한다.
this.name = name;
age = 1;
}
// age 받는 생성자. 동물이름은 "고양이"
Animal(int age) {
// name = "고양이";
// this.age = age;
this("고양이", age); // 같은 클래스 내 다른 생성자를 호출할 때 사용. 생성자 코드내에서만 호출가능. 반드시 생성자의 첫번째 문장이 되어야한다.
}
// name, age 받는 생성자
Animal(String name, int age) {
this.name = name;
this.age = age;
}
Animal(int age, String name) {
this.name = name;
this.age = age;
}
// 기본생성자를 자동생성 해주는 이클립스 메뉴 위치
// 상단메뉴 >> Source > Generate Constructors from Superclass
// 멤버변수를 매개변수로 하는 생성자를 자동생성하는 이클립스 메뉴 위치
// 상단메뉴 >> Source > Generate Constructors using Fields
String getName() { // name의 값 가져오기 메소드 (확인자 메소드), getter
return name;
}
void setName(String name) { // name에 값 넣는 메소드 (수정자 메소드), setter
this.name = name;
}
int getAge() { // age의 값 가져오기 메소드 (확인자 메소드), getter
return age;
}
void setAge(int age) { // age에 값 넣는 메소드 (수정자 메소드), setter
this.age = age;
}
// getter와 setter을 자동생성 해주는 이클립스 메뉴 위치
// 상단메뉴 >> source > Generate Getters and Setters
// getter and setter 생성 단축키
// alt s + r
// 메소드 run() 출력 "3살 강아지가 뛴다"
void run() {
System.out.println(age + "살 " + name + "가 뛴다");
}
} // Animal class
파일명 : Test3.java
package java0710;
public class Test3 {
public static void main(String[] args) {
// 객체생성 -> 생성자 호출
Animal ani = new Animal(); // 1.객체생성, 2.초기화, 3.생성자호출, 4.변수에 객체 주소값 대입
ani.run();
ani.name = "고양이";
ani.age = 5;
ani.run();
ani.setName("사자");
ani.setAge(10);
System.out.println(ani.getName());
System.out.println(ani.getAge());
System.out.println("==============");
Animal rabbit = new Animal("토끼");
rabbit.run();
Animal cat = new Animal(5);
cat.run();
Animal giraff = new Animal("기린", 4);
giraff.run();
}
}
'IT > Java' 카테고리의 다른 글
자바 메소드 오버로딩, 비정형인자, 가변인자 예제소스 (0) | 2018.07.16 |
---|---|
자바 클래스 메소드 오버로딩 (0) | 2018.07.15 |
자바 클래스 예제 (TV Class) (0) | 2018.07.11 |
자바 클래스 개념 (0) | 2018.07.11 |
자바 배열을 리턴하는 함수 예제 소스 (0) | 2018.07.11 |