반응형

안녕들 하시죠!

이번시간에는 Java의 생성자에 대해 알아보겠습니다.

 

생성자란?

객체가 생성될 때 자동으로 호출되는 메소드로써 객체의 초기화를 위해 실행된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
class Rectangle {
    int width;
    int height;
 
    public Rectangle() { // 매개변수 없는 생성자
        width = 1// 필드 초기화
    }
 
    public double getArea() { // 사각형의 면적 계산 메소드
        return width * height;
    }
}
cs

 

위의 코드에서는 Rectangle (사각형)이라는 클래스를 생성해 너비(width)와 높이(height) 필드를 생성했습니다.

그 밑에 public Rectangle() 이라는 생성자를 만들어 너비 필드를 1로 초기화했습니다.

double 형의 getArea() 메소드는 너비와 높이의 곱을 반환해 면적을 계산하는 역할을 합니다.

 

1
2
3
4
5
6
7
8
9
10
public class hello {
    public static void main(String[] args) {
 
        Rectangle rec = new Rectangle(); // Rectangle 객체 생성
        rec.height = 20// 높이를 20으로 초기화
        double area = rec.getArea(); // 면적을 계산하여 area 
        System.out.println(area); // 면적 출력
 
    }
}
cs

 

main문입니다.

객체 생성 후 width 값은 1로 초기화되어있는 것을 그대로 사용하고 height 값을 20으로 초기화하여 사용하는 부분입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
 
class Rectangle {
    int width;
    int height;
 
    public Rectangle() { // 매개변수 없는 생성자
        width = 1// 필드 초기화
    }
 
    public Rectangle(int r, int n) { // 매개 변수를 가진 생성자
        width = r; height = n; // 매개 변수로 필드 초기화
    }
    
    public double getArea() { // 사각형의 면적 계산 메소드
        return width * height;
    }
}
 
public class hello {
    public static void main(String[] args) {
 
        Rectangle Rrec = new Rectangle(510); // 객체 생성. r에 5를 n에 10을 넣어 초기화.
        double area = Rrec.getArea();
        System.out.println(area);
 
    }
}
cs

 

11번 라인을 보시면 매개변수에 int형 r과 n을 넣었습니다.

main문에서 객체를 생성하고 초기화 할때 그 값을 지정해줄 수 있습니다.

또한, 이러한 경우에 매개변수 없는 기본 생성자를 지우게 된다면 컴파일러가 기본 생성자를 생성하기 때문에 문제는 없습니다.

 

주의할 점

* 생성자의 이름은 클래스 이름과 동일하다.

 

* 생성자의 목적은 객체가 생성될 때, 필요한 초기 작업을 위함이다.

 

* 생성자에 리턴 타입을 지정할 수 없다. 리턴값이 없다고 해서, void를 리턴 타입으로 지정해도 안된다.

 

* 생성자는 new를 통해 객체를 생성할 때 한번만 호출된다.

 

* 생성자는 여러 개 작성(오버로딩) 할 수 있다.

  매개변수의 개수와 타입만 다르다면, 클래스 내의 생성자를 여러 개 둘 수 있다.

  ex) public Rectangle()

       public Rectangle(int r, int n)

 

참고서적 황기태,김효수 「명품 JAVA Programming」

'Java' 카테고리의 다른 글

Java의 == 연산자와 equals 메소드  (0) 2019.05.13
Java의 추상 클래스  (0) 2019.05.11
Java의 length필드 사용법  (1) 2019.04.29
Java의 변수와 데이터타입 (Data type)  (0) 2019.04.21
JDK & Eclipse 설치  (0) 2019.04.21

+ Recent posts