본문 바로가기
수업(국비지원)/Java

[Java] chap6 : 클래스와 객체 - 생성자, 생성자 오버로딩

by byeolsub 2023. 4. 15.
  • 생성자
 생성자 예제
  
  생성자란 : 
  1. 객체화시 호출되는 메서드.(객체 생성에 관여하는 메서드)
  2. 생성자 없는 객체 생성은 불가함. => 객체 생성시 생성자의 매개변수에 맞도록 호출해야함.
  3. 기능은 인스턴스 변수의 초기화 함.
  4. 인스턴스 멤버이다.
  5. 오버로딩이 가을함. => 하나의 클래스에 여러개의 생성자가 가능함.
  
  생성자 구현
  1. 생성자의 이름은 클래스 명과 같다.
  2. 리턴타입을 구현하지 않는다. void가 아니고 기술 하지 않는다.
  3. 생성자 오버로딩이 가능하다.
  
  기본 생성자
  1. 클래스 내부에 생성자가 구현되어 있지 않으면 컴파일러가 대신 추가해주는 생성자
  2. public 클래스명() {} 형태로 생성됨.

 

📌

package chap6;

class Number1{ //기본 생성자 컴파일에서 구현됨.
	int num;
}
class Number2{ //기본 생성자 제공 안됨. 내가 따로 구현했으니까.
	int num;
	Number2(int n){ // 생성자
		num = n;
	}
}
public class ConstructorEx1 {
	public static void main(String[] args) {
		Number1 n1 = new Number1();
		/*
		 * new 에약어 기능
		 * 1. 메모리 할당. 객체생성
		 * 2. 멤버변수들을 기본값으로 초기화.
          숫자:0, 논리형:false, 참조형:null       
		 * 3. 생성자를 호출. : Number1()
		 */
		System.out.println(n1.num); //0
		Number2 n2 = new Number2(100);
		System.out.println(n2.num); //100
	}
}

  • 생성자 오버로딩

📌

package chap6;
/*
 * 생성자 오버로딩
 */
class Card2{
	String kind;
	int number;
	Card2(String k,int n){
		kind = k;
		number = n;
	}
	Card2(int n){
		kind = "Spade";
				number = n;
	}
	Card2(String k){
		
		kind = k;
		number = 1;
	}
	Card2(Card2 c){
		kind = c.kind;
		number = c.number;
	}
	public String toString() {
		return kind+":"+number;
	}
}
public class ConstructorEx2 {
	public static void main(String[] args) {
		Card2 c1 = new Card2("spade",1);
		Card2 c2 = new Card2(10);
		Card2 c3 = new Card2("Heart");
		Card2 c4 = new Card2(c1);
		System.out.println(c1); // Spade: 1
		System.out.println(c2); //Spade: 10
		System.out.println(c3); //Heart: 1
		System.out.println(c4); // spade: 1
	}
}