728x90
목차
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // 디폴트 생성자
public Person(String pname, float pheight, float pweight) {
name = pname;
height = pheight;
weight = pweight;
} // 이름, 키, 몸무게를 매개변수로 입력받아 Person 클래스를 생성하는 생성자.
}
<생성자란?>
: 클래스를 처음 만들 때 멤버 변수나 상수를 초기화하는 것.
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // 자바 컴파일러가 자동으로 제공하는 디폴트 생성자
}
자바는 따로 생성자를 만들지 않아도 8행처럼 자동으로 디폴트 생성자가 만들어짐.
생성자 만들기
자바가 직접 디폴트 생성자를 만들어주기도 하지만 당연히 프로그래머가 직접 구현할 수 있다.
생성자는 주로 멤버 변수에 대한 값을 매개 변수로 받고, 인스턴스가 새로 생성될 때 '멤버 변수 값들을 초기화 하는 역할'을 한다.
즉 인스턴스가 생성됨과 동시에 멤버 변수의 값을 지정하고 인스턴스를 초기화하기 위해 생성자를 직접 구현하여 사용.
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // 디폴트 생성자
public Person(String pname, float pheight, float pweight) {
name = pname;
height = pheight;
weight = pweight;
} // 이름, 키, 몸무게를 매개변수로 입력받아 Person 클래스를 생성하는 생성자.
}
String형 매개 변수(pname)를 하나 입력받아 name을 지정했다.
위 처럼 하나의 클래스에 생성자가 두 개 이상 제공되는 경우를 생성자 오버로드 (constructor overload)라고 한다.
public class Student {
int studentID;
public Student(int studentID) {
this.studentID = studentID
} // 학번(studentID)를 매개변수로 입력받아, Student클래스를 생성하는 생성자.
만약에 위와 같이 직접 생성자를 구현했다면, 자바에서는 디폴트 생성자를 자동으로 생성하지 않는다.
new Student()가 생성될 때 studentID가 꼭 필요하기 때문이다.
Person 클래스 구현
package constructor;
public class Person {
String name;
float height;
float weight;
public Person() {} // 디폴트 생성자
public Person(String pname, float pheight, float pweight) {
name = pname;
height = pheight;
weight = pweight;
} // 이름, 키, 몸무게를 매개변수로 입력받아 Person 클래스를 생성하는 생성자.
}
PersonTest 클래스 구현
package constructor;
public class personTest {
public static void main(String[] args) {
Person personKim = new Person();
personKim.name = "김";
personKim.height = 185;
personKim.weight = 80;
System.out.println(personKim.name + ", " + personKim.height + ", " + personKim.weight);
// 디폴트 생성자로 클래스 생성 후 인스턴스 변수값을 따로 초기화
System.out.println(); // 줄 간격 띄우기
Person personLee = new Person("이순신", 180, 80); // 'Person(...)'이 생성자
System.out.println(personLee.name);
System.out.println(personLee.height);
System.out.println(personLee.weight);
} // 인스턴스 변수 초기화와 동시에 클래스를 생성함
}
Run 하면
[Do it! 자바 프로그래밍 입문] 도서로 공부하며 정리한 글입니다.
300x250