Constructor(생성자)(+Overload)

YongJun·2023년 8월 31일

JAVA

목록 보기
9/24
post-thumbnail

생성자(Constructor) 메소드

  • 객체 초기화
  • 생성자명은 반드시 클래스명과 동일하다.
  • 자동호출 - 클래스를 메모리에 생성 시(new 할때)
  • returnType(결과형)이 없다. <--> void : return값이 없다
  • 클래스 안에 생성자가 하나도 없을 시에는 자동으로 기본(default) 생성자 호출 기본 생성자 - 인수가 없는 메소드

예제

package constructor;

public class ConstructorMain {
	
	private String name;
	private int age;
	
	/*
	★ 생성자 
	기본 생성자(매개 변수가 없는 생성자, 자동적으로 모든 맴버 변수(name,age)들을 기본값으로 초기화한다.)
	만약 개발자가 생성자를 하나도 정의하지 않으면 자바 컴파일러는 기본 생성자를 자동으로 만든다.
	만약 생성자를 하나라도 선언하면 컴파일러는 기본 생성자를 추가하지 않는다. 
	*/
	
	public ConstructorMain() {
		System.out.println("default 생성자");
	}
	
	public ConstructorMain(String name) {
		this(); //Overload 된 다른 생성자를 호출할 때, 생성자에서 반드시 첫줄에 써야 한다.
		System.out.println("name 처리 생성자");
		this.name = name;
	}
	
	public ConstructorMain(int age) {
		this("코난");//Overload한 다른 생성자를 호출할 수 있다
		System.out.println("age 처리 생성자");
		this.age = age;
	}
	
	public static void main(String[] args) {
		ConstructorMain aa = new ConstructorMain();
		System.out.println(aa.name + "\t" + aa.age);
		System.out.println();
		
		ConstructorMain bb = new ConstructorMain("홍길동");
		System.out.println(bb.name + "\t" + bb.age);
		System.out.println();
		
		ConstructorMain cc = new ConstructorMain(25);
		System.out.println(cc.name + "\t" + cc.age);
		System.out.println();
	}

}
/*
default 생성자
null	0

default 생성자
name 처리 생성자
홍길동	0

default 생성자
name 처리 생성자
age 처리 생성자
코난	25
*/
package constructor;

public class Box {

	int width, height, depth;
	
	public Box(int w, int h, int d) {
		width=w;
		height=h;
		depth=d;
	}
	public static void main(String[] args) {
		Box b = new Box(4,5,6);		
	}
}
//매개변수가 있는 생성자 하나가 선언되어 있으면 객체가 new연산자로 생성될 때 동일한 타입의 매개변수가 있어야한다.

Overload

하나의 클래스 안에서 똑같은 이름의 메소드가 2개 이상 존재 할 때
인수(매개변수) 형이 틀리거나
인수(매개변수) 개수가 틀린 경우

class Jun{
	public void sub(){}
	public void sub(int a){} 
	public void sub(String a){}
	public void sub(char a){}
	public void sub(int a, int b){}
	
	public int sub(int a){} //error
}  
profile
개(발자어)린이

0개의 댓글