JAVA_Basic ) 생성자
Programming/Java 기초

JAVA_Basic ) 생성자

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