딱콩이의 봄

생성자 오버로딩(Constructor Overloading) 본문

개발/JAVA

생성자 오버로딩(Constructor Overloading)

코린이딱콩 2022. 8. 29. 16:03

✔️클래스 필드의 초기화는 다양한 방식으로 이루어질 수 있으며 이를 위해 다양한 형태의 생성자를 정의할 수 있습니다.

✔️생성자의 이름은 반드시 클래스의 이름과 동일해야 하기 때문에 다수의 생성자 정의는 생성자 오버로딩으로 정의합니다.

✔️생성자 오버로딩은 해당 클래스를 구성하는 생성자들의 매개변수 개수와 타입, 순서를 달리하여 정의합니다.

✔️객체의 인스턴스화 과정에서 생성자를 호출하며 이때 파라미터를 다르게 하여 필요한 생성자를 호출합니다.

 

 

예시1

class Animal {
	String name;
    
    void setName(String name) {
    	this.name = name;
    }
    
}

class Dog extends Animal {
	void sleep() {
    	System.out.println(this.name + "zzz");
        
     }
 }
 
class HouseDong extends Dog {
    	HouseDog(String name) {
            	this.setName(name);
           }
           
         HouseDog(int type) {
            	if(type == 1) {
                	this.setName("yorkshire");
                    }else if (type == 2) {
                    this.setName("bulldog");
                   }
                }
                
                
 		void sleep() {
            	System.out.println(this.name + "zzz in house");
            }
        void sleep(int hour) {
            	System.out.println(this.name + "zzz in house for " + hour + "hours");
            
          }
        }
       
       
       
 public class Sample {
 	public static void main(String[] args) {
    	HouseDog happy = new HouseDog("happy");
        HouseDog yorkshire = new HouseDog(1);
        System.out.println(happy.name); //happy 출력
        System.out.println(yorkshire.name); //yorkshire 출력
        
      }
    }

예시2

public class Employee {

	private String name;
    private int age;
    private String department;
    
    public Employee() {
    	System.out.println("Employee() 생성자 호출");
      }
   	
    public Employee(String name) {
    	System.out.println("Employee(String name) 생성자 호출");
      }
    
    public Employee(String name, int age) {
    	System.out.println("Employee(String name, int age) 생성자 호출");
      }
      
public class Test {
	public static void main ( String args[]) {
    	Employee employee1 = new Employee();
        Employee employee2 = new Employee("김수현");
        Employee employee3 = new Employee("홍길동", 20);
        
        System.out.println(employee1);//Employee() 생성자 호출
        System.out.println(employee2);//Employee(String name) 생성자 호출
        System.out.println(employee3);//Employee(String name, int age) 생성자 호출

'개발 > JAVA' 카테고리의 다른 글

JAVA 메모리 모델  (0) 2022.08.29
this() Constructor  (0) 2022.08.29
디폴트 생성자(Default Constructor)  (0) 2022.08.29
생성자(Constructor)  (0) 2022.08.27
오버로딩 (OverLoading)  (0) 2022.08.27
Comments