Java - Class 생성자

컴퓨터/Java

728x90
반응형

초기화를 시켜주는 생성자 

Java언어를 이용해서 객체지향 개념 프로그래밍을 하기 위해서는 class를 정의하고 정의된 class를 객체화(인스턴스)를 해야 됩니다. 

  • class를 정의한다.
    • 멤버 변수와 메서드들의 형태를 정의해 준다.
  • 정의된 class를 객체화(인스턴스의 생성)를 한다.
    • 정의된 class를 독립된 객체로 생성을 하여 메모리상에 올려놓는다. 
  • 초기화(Constructor)를 한다.
    • 객체화(인스턴스의 생성) 시 그 독립된 객체의 초기값을 설정해준다.

 

생성자의 정의 

프로그래머가 class를 정의할 때 생성자를 정의하여 독립된 객체로 인스턴스 변수를 만들 때에 초기값을 설정해 줄 수 있습니다. 

생성자는 메서드와 비슷한 형태이며 class의 이름과 동일합니다.

 

class Human
{
	//생성자
    Human(String g,int h, int w)
    {
    	gender = g;
    	height = h;
    	weight = w;
    }

	//멤버 변수
    private String gender;
    private int height;
    private int weight;
    //메소드
    void intro()
    {
    	System.out.println("이 사람의 성별은 "+gender+"이며 키는 "+height+"이고 몸무게는 "+weight+"입니다.");
	}  
}

실행시키면 다음과 같은 결과를 얻을 수 있습니다.

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Human human1 = new Human("남자",180,75);
		human1.intro();
	}
}
이 사람의 성별은 남자이며 키는 180이고 몸무게는 75입니다.

 

생성자를 정의하지 않는다면?

생성자가 없는 경우에도 인스턴스 생성이 가능합니다. 이런 경우 어떻게 되는지 확인해 보도록 하겠습니다.

public class Human
{
	/*
    Human(){}
    */
	//멤버 변수
    private String gender;
    private int height;
    private int weight;
    //메소드
    void intro()
    {
    	System.out.println("이 사람의 성별은 "+gender+"이며 키는 "+height+"이고 몸무게는 "+weight+"입니다.");
	}  
}
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Human human1 = new Human();
		human1.intro();
	}
}
이 사람의 성별은 null이며 키는 0이고 몸무게는 0입니다.

사실 class를 정의할 때 생성자를 정의하지 않는다면 위의 소스코드와 같이 아무것도 없는 생성자가 있는 것과 마찬가지입니다. 생성자가 존재해야만 인스턴스 변수의 생성이 가능해지기 때문입니다. 

 

생성자 정의의 필요성

위와 같이 어떠한 class를 정의하고 그 class를 이용해 독립된 객체화를 하는데 아주 효율적일 수 있습니다. 멤버 변수들의 초기값을을 생성과 동시에 정의하면서 독립된 객체를 다루기 위한 사전 준비작업을 쉽게 할 수 있기 때문입니다.

728x90
반응형

'컴퓨터 > Java' 카테고리의 다른 글

Java - 얕은 복사와 깊은 복사  (0) 2021.07.21
Java - 오버로딩과 오버라이딩  (0) 2021.07.19
Java - class의 상속의 개념(extends)  (0) 2021.07.16
Java - 접근 제한자  (0) 2021.07.07
Java - Class  (0) 2021.07.05

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :