Java

Java - 생성자(Constructor) , 생성자 오버로딩

왕현성 2023. 1. 19. 11:04
728x90

1. 생성자

  • 함수의 리턴 타입이 없음
  • 클래스의 이름과 같은 이름으로 함수를 정의
  • 메모리에 객체를 생성하여 영역을 확보
  • 바로 인스턴스 변수에 데이터 셋팅

 

2. 생성자 오버로딩

  • 디폴트 생성자 말고 생성자 오버로딩으로 생성자를 만들 때는
  • 꼭!!!!! 위의 Member() <= 이 디폴트 생성자를 눈에 보이게 만들어줘야한다.
	Member(){
	}
	

	Member(String pName,String pTel,String pAddress){
		name = pName;
		tel = pTel;
		address = pAddress;
	}
	
	Member(String pName){
		name = pName;
	}

 

 

전체 코드

public class Member {
	
	String name;
	String tel;
	String address;
	
	// 아래 함수는 눈에 보이지 않게 자동으로 만들어지는 함수
	// 1. 리턴의 데이터 타입이 없다!
	// 2. 함수의 이름이 클래스의 이름과 같다.
	// 이런 함수를 Constructor(생성자)라고 한다.
	Member(){
	}
	
	// 얘도 생성자
	// 이런 것을 생성자 오버로딩이라고 한다.
	// 위의 디폴트 생성자 말고 이렇게 생성자 오버로딩으로 생성자를 만들면
	// 꼭!!!!!!!!!!! 위의 Member() <= 이 디폴트 생성자를
	// 눈에 보이게 만들어줘야 한다.
	
	Member(String pName,String pTel,String pAddress){
		name = pName;
		tel = pTel;
		address = pAddress;
	}
	
	Member(String pName){
		name = pName;
	}
	
//	Member m2 = new Member();
//	m2.name = "아이유";
//	m2.tel = "010-333-1111";
//	m2.address = "서울시 어딘가";
	
	// 함수의 리턴은 아직 결정하지 않고
	// 함수의 이름과 파라미터만 먼저 생각한다.
	void setMember(String pName,String pTel,String pAddress){
		name = pName;
		tel = pTel;
		address = pAddress;
	}
	void print() {
		System.out.println(name);
		System.out.println(tel);
		System.out.println(address);
	}
	}

 

 

public class MemberMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		// 객체생성이란 ??
		
		// 1. 메모리 공간 확보
		Member m1 = new Member();
		// 2. 데이터 저장
		m1.setMember("홍길동", "010-1234-5678", "인천시 서구 가좌동");
		
		Member m2 = new Member();
		m2.setMember("아이유", "010-333-1111", "서울시 어딘가");
		
		// constructor  ( 생성자 )
		// 메모리 공간 확보와 데이터 저장을 한 줄로 처리한다!
		Member m3 = new Member("김나나","010-123-9999","인천시 서구 청라");
		
		// Mike "010-222-5555" "이태원"
		// 생성자로 저장하되, 생성자에 이름만 저장하도록 만든다.
		// 전화번호와 주소는 나중에 저장할 것이다.
		// 메모리 공간 확보하면서 이름만 저장하도록 만들어라.
		Member m4 = new Member("Mike") ;
		
		
		// 잘 저장되었는지 확인
//		System.out.println(m1.name);
//		System.out.println(m1.tel);
//		System.out.println(m1.address);
//		
//		System.out.println(m2.name);
//		System.out.println(m2.tel);
//		System.out.println(m2.address);
		
		m1.print();
		m2.print();
		m3.print();
		m4.print();
		
		
		
		
				

	}

}