Java - Constructor & Overloading

iseon_u·2022년 4월 30일
0

Java

목록 보기
21/77
post-thumbnail

Constructor 생성자


특징

  • 인스턴스가 생성될 때마다 호출되는 “인스턴스 초기화 메서드”
  • 주요 기능은 초기화
  • 인스턴스 생성시 수행할 작업에 사용

규칙

  • 클래스 이름과 같은 이름의 메서드
  • 오버로딩 가능, 즉 여러 개가 가능하다.
  • 리턴 값이 없다. (항상 반환 값이 없으므로 void 사용 안함)
  • 모든 클래스는 반드시 생성자를 가져야 한다.

Default constructor 기본 생성자

  • 매개변수가 없는 생성자
  • 생성자가 하나도 없을 때만 컴파일러가 자동 추가
  • 자동 추가 되지만 클래스 생성시 항상 직접 만들어 놓는게 좋다. ✅
Alpabet() {}

주요 에러

  • cannot resolve symbol - 이름에 문제 발생, 찾을 수 없고 이해 할 수 없다는 뜻

매개변수가 있는 생성자

class Alpabet{
	Alpabet() { // 매개변수 없는 기본 생성자
		// 인스턴스 초기화 작업
	}
	Alpabet(String k, int n) { // 매개변수 있는 생성자
		// 인스턴스 초기화 작업
		kind = k;
		number = n;
	}
}
Alpabet abc = new Alpabet("aaa", 1); // 생성자 호출, 사용
// ------>
//Alpabet abc = new Alpabet();
//abc.kind = "aaa";
//abc.number = 1;
  1. 참조 변수 abc 생성
  2. new 메모리 접근 연산자가 객체 생성 (heap 힙 영역)
  3. 생성자 호출해서 객체 초기화
  4. 객체 주소 (new 연산자 반환 값) 참조 변수에 대입

Overloading 오버로딩


특징

  • 한 클래스 안에 같은 이름의 메서드 여러 개 정의 하는 것
  • JVM 은 매개값 타입을 보고 메서드 선택
  • 매개변수는 다르지만 같은 의미의 기능 수행 (올바른 예 ✅)

조건

  1. 메서드 이름이 같아야 한다.
  2. 매개변수의 개수, 순서 또는 타입이 달라야 한다.
  3. 반환 타입은 영향없다.

주요 에러

  • The method is ambiguous - 어느 함수를 호출 했는지 모호, 불확실하다.
profile
🧑🏻‍💻 Hello World!

0개의 댓글