자바의 정석

오버로딩(overloading)

  • 한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것
  • println 이 대표적
  • 오버로딩이 성립하기 위한 조건
    • 1. 메서드 이름이 같아야 한다.
    • 2. 매개변수 개수 또는 타입이 달라야 한다.
    • 3. 반환 타입은 영향 없다.
  • 매개변수는 다르지만 같은 의미의 기능수행

 

생성자(constructor)

  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
  • 인스턴스 생성시 수행할 작업(iv 초기화)에 사용

생성자

  • iv 초기화 메서드
  • 이름이 클래스 이름과 같아야 한다.
  • 리턴값이 없다(void 안붙임)
  • 모든 클래스는 반드시 생성자를 가져야 한다 (한개이상)

 

기본 생성자(default constructor)

  • 매개 변수가 없는 생성자
  • 생성자가 하나도 없을 때만 컴파일러가 기본 생성자 자동 추가

클래스이름() {} // 기본 생성자

 

 

매개변수가 있는 생성자

 

매개변수가 있는 생산자

 

생성자 this()

  • 생성자에서 다른 생성자 호출할 때 사용
  • 다른 생성자 호출시 첫 줄에서만 사용 가능 

코드의 중복을 제거

 

참조 변수 this

  • this() 생성자랑 전혀 다른거임
  • 인스턴스 자신을 가리키는 참조변수
  • 인스턴스 메서드(생성자 포함)에서 사용가능
  • 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
  • 같은 클래스 안에서는 생략 가능

 

참조변수 this와 생성자 this()

this

인스턴스 자신을 가리키는 참조변수 인스턴스 주소가 저장되어 있다.

모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재한다. (선언 안해도 사용가능)

 

this(), this(매개변수) 

생성자

같은 클래스의 다른 생성자를 호출할 때 사용한다.

 

 

변수의 초기화

  • 지역변수(lv)는 수동 초기화 해야함(사용전 꼭!!!)
  • 멤버변수(iv, cv)는 자동 초기화 된다

 

 

멤버변수의 초기화

1. 명시적 초기화(=) 간단 초기화

 

Class Car {

         int door =4;             //기본형(primitive type) 변수의 초기화

         Engine e = new Engine()  //참조형(reference type) 변수의 초기화

2. 초기화 블럭 (복잡한 초기화)

- 인스턴스 초기화 블럭: {}

- 클래스 초기화 블럭: static {}

 

3. 생성자

-Iv 초기화, 복잡한 초기화에 사용

 

 

클래스 변수 초기화 시점: 클래스가 처음 로딩될 때 한번

인스턴스 변수 초기화 시점: 인스턴스가 생성될 때 마다

1. cv -> iv

2. 자동 0 -> 간단 = -> 복잡 static {}

 

 

 

 

 

 

+ Recent posts