개념
특징
개념
특징
개념
클래스 예제
public class Student {
//멤버 변수
String name;
int number;
int grade;
// 메서드(함수)
public void getGrade() {
grade += 10;
}
public static void main(String[] args) {
Student student1 = new Student(); // 객체를 생성할때는 new 연산자를 통해 생성한다.
// Student()는 생성자를 호출한다는 의미이다.(생성자는 좀 이따 설명)
student1.name = "영희";
student1.number = 1;
student1.grade = 80;
System.out.println("학생의 이름은 " + student1.name);
System.out.println("학생의 번호는 " + student1.number);
System.out.println("학생의 성적은 " + student1.grade);
student1.getGrade();
System.out.println("학생의 성적은 " + student1.grade);
}
}
실행결과!
학생의 이름은 영희
학생의 번호는 1
학생의 성적은 80
학생의 성적은 90
이런식으로 코드를 작성하면, 일일이 객체의 속성을 지정해서 출력을 해주어야해서 귀찮을 뿐더러
코드도 길어질것이다.
그래서 클래스에는 생성자(Constructor)라는 것이 있다.
생성자는 new 연산자를 통해 객체를 생성할 때 반드시 호출이 되고 제일 먼저 실행되는 일종의 메서드라고 생각하면 편하다.(메서드와 비슷하지 그 의미가 같은 것은 아니다) 생성자는 멤버 변수를 초기화하는 역할을 한다.
위 사진과 같고, 빨간색부분이 필수이며 파란색은 선택이다.
생성자는 리턴값이 없다.
따라서 아래와 같이 생성할 수 있다.
class Student {
Student() {} // 매개변수가 없는 생성자
Studnet(String name, int number){} // 매개변수가 있는 생성자
}
그런데 아까 처음에 작성한 예제 코드에서는 생성자를 선언하지 않았는데 객체가 잘 생성되었다.
그 이유가 무엇일까?
그것은 생성자를 선언하지 않으면 컴파일러에서 자동으로 기본 생성자(Default Constructor)를 생성해주기 때문이다.
기본 생성자는 public Class() {}
와 같은 형태이다.
기본 생성자는 생성자가 하나도 없을 경우, 자동으로 생성해 주기 때문에 이에 유의하면서 코드를 작성해야 한다.
예제를 통해 생성자에 대해 살펴보자.
public Student() {
String name = "학생";
int number = 100;
int grade = 0;
System.out.println("학생의 이름은 " + name);
System.out.println("학생의 번호는 " + number);
System.out.println("학생의 성적은 " + grade);
}
public static void main(String[] args) {
Student student1 = new Student();
}
처음에 작성한 코드를 위와 같이 고쳐보자
그러면 실행 결과가 다음과 같이 나올 것이다.
실행결과
학생의 이름은 학생
학생의 번호는 100
학생의 성적은 0
그렇다면 이제 매개변수를 받는 생성자를 만들어서 우리가 원하는 학생 객체를 만들어 보자.
번호가 1이고 성적은 50인 영희학생과 번호가2이고 성적은 40인 철수학생을
매개변수를 받는 생성자를 이용해 만들어보자
public Student(String studentName, int studentNumber, int studentGrade) {
String name = studentName;
int grade = studentNumber;
int number = studentGrade;
System.out.println("학생의 이름은 " + name);
System.out.println("학생의 번호는 " + number);
System.out.println("학생의 성적은 " + grade);
}
public static void main(String[] args) {
Student student1 = new Student("영희", 1, 50);
Student student2 = new Student("철수", 2, 40);
}