본문 바로가기
자바(Java)/자바의 신 2판 정리

자바의 신 2판, 8장 정리

by 학습하는 청년 2021. 12. 16.

21.12.02ver

1. 참조 자료형

  • 기본 자료형 8개를 제외한 나머지 모두
  • new 없이도 객체를 생성할 수 있는 건 오직 String
  • + 연산자를 사용할 수 있는 참조 자료형은 String 뿐이며, 나머지는 = 만 가능

  • 조건문이나 반복문에서 그냥 사용할 수는 없다.
  • 하지만, boolean 타입의 리턴값을 제공하거나 null인지 체크하는 경우에는 사용할 수는 있다.

 

 

2. 기본 생성자

  • 생성자를 만들지 않아도 자동으로 만들어진다.
  • 다른 생성자가 있으면 자동으로 만들어지지 않는다.

 

 

3. 생성자

  • 메소드와 비슷하게 생겼지만, 리턴 타입이 없고, 클래스 이름으로 되어 있다는 점이 메소드와 다르다.
  • 개수는 1개여도 되고 100개가 되도 상관이 없다. 
  • 하지만, 너무 많으면 관리가 힘들어지므로 꼭 필요에 맞는 생성자만 만드는 습관을 들여야만 한다.

 

Q. 왜 필요할까??

자바 클래스의 객체(또는 인스턴스)를 생성하기 위해

 

Q. 생성자에 리턴 타입이 없는 이유는?

생성자의 리턴 타입은 클래스 객체이기 때문이며,

클래스와 이름이 동일해야 컴파일러가 '생성자'임을 알아 차릴 수 있기 때문이다.

 

 

cf. 자바 패턴

  • 비슷한 기능을 하는 규칙에 하나의 이름을 정해놓은 것
  • 자바를 보다 더 제대로 개발하고 사용하려면 알아두면 많은 도움이 된다.

 

DTO(Data Transfer Object)

  • 어떤 속성을 갖는 클래스를 만들고, 그 속성들을 쉽게 전달하기 위해 만든다.
  • 데이터를 다른 서버로 전달하기 위한 것이 주 목적

 

VO(Value Object)

  • DTO와 형태는 동일
  • 데이터를 담아 두기 위한 목적으로 사용

 

DTO가 VO를 포함한다.

 

 

4. this

  • 예약어
  • "이 객체" 라는 의미
  • 이 객체의 변수와 매개 변수를 구분하기 위함
  • 생성자메소드 안에서 사용할 수 있다.
public class MemberDTO {
   public String name;
   public String phone;
   public String email;
   public MemberDTO(String name) {
      neme = name; //모두 매개 변수로 넘겨준 name
   }
}
// 이럴 경우, 앞의 name은 인스턴스 변수, 뒤의 name은 매개변수의 name으로 생각하고 싶겠지만 
생성자 안에 있는 변수이기 때문에 중괄호 안에 있는 name은 모두 매개 변수로 넘겨준 name이라고 생각한다.

혼동을 피하기 위해서는 매개 변수와 인스턴스 변수의 이름을 다르게 하는 것이다.

public class MemberDTO {
   public String name;
   public String phone;
   public String email;
   public MemberDTO(String paramName) {
      neme = paramName;
   }
}

하지만 이보다 더 간단한 방법이 있다. 예약어 this를 사용하는 것이다.

public class MemberDTO {
   public String name;
   public String phone;
   public String email;
   public MemberDTO(String name) {
      this.neme = name; // 이 객체의 name
   }
}

 

 

5. 메소드 overloading(오버로딩)

  • 메소드의 이름은 같지만 매개 변수들을 다르게 하여 만든 것
  • 또한, 매개 변수의 타입 순서가 달라도 다른 메소드로 인식된다.

 

overload

  1. 과적하다
  2. 너무 많이 부하를 주다
  3. 지나치다

 

즉, 하나의 메소드 이름으로 많은 부하를 준다고 볼 수 있다.

 

오버로딩 기능을 제공하는 이유는 뭘까?

  • 이름을 달리해야 했다면, 훨씬 불편했을 것이다.

 

 

6. 메소드에서 값 넘겨주기

 

메소드가 종료되는 조건

  1. 메소드의 모든 문장이 실행되었을 때
  2. return 문장에 도달했을 때
  3. 예외가 발생(throw)했을 때

return 이라는 예약어를 사용하여 리턴해 주면 요청한 메소드로 그 값이 전달된다.

그러므로 리턴 문장 뒤에 다른 계산 문장이 있으면 안 된다. 컴파일 오류가 발생한다.

 

 

7. static

  • 객체를 생성하지 않아도 메소드를 호출할 수 있다.
  • 메소드의 리턴 타입 앞에 static 이라고 써 주면 static 메소드가 된다.
  • 단, static 메소드는 클래스 변수만 사용할 수 있다.

 


ps. 정리하지 않은 내용

  1. static 블록
  2. pass by value, pass by reference
  3. 매개 변수를 지정하는 특이한 방법

 

 

'자바(Java) > 자바의 신 2판 정리' 카테고리의 다른 글

자바의 신 2판, 9장 정리  (0) 2021.12.16
자바의 신 2판, 7장 정리  (0) 2021.12.16
자바의 신 2판, 6장 정리  (0) 2021.12.08
자바의 신 2판, 5장 정리  (0) 2021.11.25
자바의 신 2판, 4장 정리  (0) 2021.11.24

댓글