Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • EC2
  • JPA
  • hash
  • JSP
  • 재귀
  • 백준
  • GIT
  • sql
  • 문자열
  • dfs
  • 완전탐색
  • java
  • 자료구조
  • github
  • 인프런
  • 주간 학습 계획
  • 프로그래머스
  • 알고리즘
  • 면접을 위한 CS 전공지식 노트
  • 파이썬
  • 정렬
  • 자바
  • 이분탐색
  • AWS
  • BFS
  • Stack
  • MVC
  • 이코테
  • MySQL
  • 해시

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

JAVA

[JAVA 복습] 기본 생성자와 매개변수가 있는 생성자

2021. 8. 31. 16:51

- 자바의 정석 (기본편)을 참고했습니다.
- 복습을 위한 게시글입니다.
- 소스에 오타가 있을 수 있습니다. ^^:;

생성자(constructor) 란 ?
생성자는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드이다.
생성자는 특별한 메서드라고 할 수 있는데, 다음과 같은 특징을 지닌다.
1. 생성자 역시 메서드처럼 클래스 내부에 선언된다.
2. 생성자의 이름은 클래스의 이름과 동일해야 한다.
3. 생성자는 return 값이 없다. (void가 생략되는 것)
4. 생성자 또한 오버로딩이 가능하다.
5. 매개변수가 없거나 있을 수 있다.

기본 생성자
클래스 내부에 아무런 생성자도 없다면, 컴파일러가 제공해주는 생성자이다.
인스턴스 초기화 작업이 필요없다면 기본 생성자를 사용하자.
클래스 내부에 하나라도 생성자가 있다면 컴파일러는 기본 생성자를 제공해주지 않는다 !!

생성자 오류 예제 코드
Data 인스턴스를 생성할 때, 클래스 내부에 아무런 생성자도 없기에 컴파일러가 기본 생성자를 자동으로 추가해준다.
하지만 Data2 클래스에는 하나 이상의 생성자가 정의되어 있기 때문에 기본 생성자가 추가되지 않았고, 그래서 에러가
발생한 것이다.

class Data { 
	int value; 
} 

class Data2{ 
	int value; // 매개변수가 있는 생성자 
    
    Data2(int x) {
    	value = x; 
    	} 
  } 
    
class Ex6_11 { 
	public static void main(String args[]){     
    	Data d = new Data(); Data2 d = new Data2(); // 에러 원인 
    } 
} 

/*결과 17번 줄 컴파일 에러 발생 메세지 */



매개변수가 있는 생성자
생성자는 인스턴스 초기화 작업에 사용할 수 있다고 했다. 매개변수가 있는 생성자가 있다면 인스턴스마다 각기 다른
값으로 초기화돼야 하는 경우에 아주 유용하게 사용할 수 있다.

매개변수가 있는 생성자 예제 코드
Car 클래스 내부에 생성자가 1개 이상 존재한다. 때문에 기본 생성자를 사용하기 위해선 직접 기본 생성자를 적어준다.

Car c = new Car(); 에서 인스턴스를 생성할 때 기본 생성자를 호출하는데, 기본 생성자는 따로 인스턴스를 초기화하는
작업이 없기 때문에 color, gearType, door를 직접 초기화 해준 뒤 사용한다.

Car c1 = new Car("White", "auto", 4); 구문을 확인해보면, 따로 초기화를 하지 않는데, 이것이 바로 매개변수가 있는
생성자를 사용하는 이유이다.

class Ex6_12{ 
	public static void main(String args[]){     
    	Car c = new Car(); 
        c.color = "White"; 
        c.gearType = "auto"; 
        c.door = 4; 
        
        Car c1 = new Car("White", "auto", 4); 
        
        System.out.println(c.color +","+ c.gearType +","+ c.door); 
        System.out.println(c1.color +","+ c1.gearType +","+ c1.door); 
    } 
} 

class Car { 
	String color; 
    String gearType; 
    int door; 
    
    // Car 클래스 기본 생성자 
    Car() {} 
    
    // Car 클래스 매개변수가 있는 생성자 
    Car(String c, String g, int d) { 
    	color = c; 		// 매개변수로 받은 c 값을 변수 color에 저장한다. 
        gearType = g; 	// 매개변수로 받은 g 값을 변수 gearType에 저장한다. 
        door = d; 		// 매개변수로 받은 d 값을 변수 door에 저장한다. 
    } 
}

'JAVA' 카테고리의 다른 글

[JAVA 복습] 참조변수 super와 조상의 생성자 super()  (0) 2021.09.02
[JAVA 복습] 상속에 대해  (0) 2021.09.02
[JAVA 복습] 생성자 this() 와 객체 자신을 가리키는 참조변수 this  (0) 2021.08.31
[JAVA 복습] 오버로딩 / 오버라이딩 비교  (0) 2021.08.31
[JAVA 복습] 기본형, 참조형 매개변수의 비교  (0) 2021.08.31
    'JAVA' 카테고리의 다른 글
    • [JAVA 복습] 상속에 대해
    • [JAVA 복습] 생성자 this() 와 객체 자신을 가리키는 참조변수 this
    • [JAVA 복습] 오버로딩 / 오버라이딩 비교
    • [JAVA 복습] 기본형, 참조형 매개변수의 비교
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바