자바(Java) 프로그래밍, 클래스와 객체 Part 2

반응형
    728x90
    반응형

    1. 생성자

    package constructor;
    
    public class Person {
    	String name;
    	float height;
    	float weight;
    }
    
    
    package constructor;
    
    public class PersonTest {
    
    	public static void main(String[] args) {
    		Person personLess = new Person(); // Person()을 생성자라고함
    	}
    
    }

    1-1. 디폴트 생성자

    생성자는 클래스를 생성할 때만 호출한다.

    생성자 이름은 클래스 이름과 같고, 생성자는 반환 값이 없다.

    그런데 위 Person 클래스 예제를 보면 Person() 생성자가 따로 없다.

    왜냐하면 생성자가 없는 클래스 파일을 컴파일 할 때 

    자바 컴파일러에서 자동으로 생성자를 만들어 준다.

    이렇게 자동으로 만들어 주는 생성자를 '디폴트 생성자'라고 한다.

    디폴트 생성자 예제

    package constructor;
    
    public class Person {
    	String name;
    	float height;
    	float weight;
    	
    	public Person() {     //자바 컴파일러가 자동으로 제공하는 디폴트 생성자
    		
    	}
    }

    1-2. 생성자 만들기

    생성자는 주로 멤버 변수에 대한 값들을 매개변수로 받아서

    인스턴스가 생성될 때 멤버 변수 값들을 초기화 하는 역할을 한다.

    즉, 인스턴스가 생성됨과 동시에 멤버 변수 값을 지정하고

    인스턴스를 초기화하기 위해 생성자를 직접 구현하여 사용한다.

    이름을 매개변수로 받는 생성자 만들기

    package constructor;
    
    public class Person {
    	String name;
    	float height;
    	float weight;
    	
    	public Person(String pname) {		//사람 이름을 매개변수로 입력받아 
    		 name = pname;    		//Person 클래스를 생성하는 생성자
    	}
    }

    1-3. 생성자 오버로드

    클래스에 생성자가 두 개 이상 제공되는 경우를 생성자 오버로드라고 한다.

    필요에따라 매개변수가 다른 생성자를 여러 개 만들 수 있다.

    클래스에 생성자를 여러 개 제공하면 이 클래스를 사용하는 코드에서는

    원하는 생성자를 선택해 사용할 수 있다.

    예제

    package constructor;
    
    public class Person {
    	String name;
    	float height;
    	float weight;
    	
    	public Person() { }		//디폴트 생성
    	
    	public Person(String pname) {
    		 name = pname;		//이름을 매개변수로 받는 생성자
    	}
    	public Person(String pname, float pheight, float pweight) {
    		name = pname;
    		height = pheight; 	//이름, 키, 몸무게를 매개변수로 받는 생성자 
    		weight = pweight;
    	}
    }
    package constructor;
    
    public class PersonTest {
    
    	public static void main(String[] args) {
    			
    		Person personLee = new Person();
    		personLee.name = "이순신";
    		personLee.height = 180.7F;  //디폴트 생성자로 클래스를 생성한 후
    		personLee.weight = 78.0F;   //인스턴스 변수 값을 따로 초기
    		
    		Person personKim = new Person("김유신", 175, 75); //인스턴스 변수 초기화와 동시에 클래스 생성
    	}
    
    }
    728x90
    반응형

    댓글

    Designed by JB FACTORY