강잇
강이의 개발블로그
강잇
전체 방문자
오늘
어제
  • 분류 전체보기 (102)
    • Langauge (32)
      • Java-basic (29)
      • Java (3)
    • SpringBoot (7)
    • Algorithm (5)
      • BAEKJOON (5)
    • WEB (7)
      • HTML & CSS (7)
    • DB (1)
      • MySQL (1)
    • OS (17)
      • Mac (2)
      • Linux (4)
      • Terminal Command (11)
    • Computer Science (7)
      • Hard ware (1)
      • Database (1)
      • Data structure (2)
      • Algorithm (2)
      • Network (1)
    • Git (5)
      • 개념 (1)
      • 활용 (1)
      • Trouble Shooting (2)
    • ETC. (13)
      • Install (6)
      • IntelliJ (1)
      • Eclipse (2)
      • Error (3)
      • Tip (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • CSS 속성
  • 백준
  • 자바
  • 메서드
  • 알고리즘 공부
  • 메소드
  • CSS 박스 크기 설정

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
강잇

강이의 개발블로그

Langauge/Java-basic

[Java] this키워드와 this() 메서드

2022. 7. 21. 00:03

this. 키워드

  • 자신이 포함된 클래스의 객체를 가리키는 역할을 하며 this. 키워드를 통해 인스턴스 변수에 접근할 수 있다.
  • 일반적으로 키워드를 생략하면 컴파일러가 자동으로 추가한다.
  • 생략하면 컴파일러가 자동으로 추가하는데 그럼 언제 사용할까?
    -> 메서드를 선언한 후 매개변수와 인스턴스 변수의 이름이 동일할 때 구분하기 위하여 사용된다.
class Cat {
    String name;
    int age;
    double weight;
    
    public Cat(String name, int age, double weight) {
        // 생성자를 통해서 인스턴스를 초기화할 때 
        // 매개변수와 인스턴스 변수를 구분하기 위해 this. 키워드 사용
        this.name = name;
        this.age = age;
        this.weight = weight;
    }
}

this() 메서드

  • 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용.
  • 여러 개의 생성자를 정의할 때 생성자의 중복을 줄이기 위해 사용한다.
  • this() 메서드를 사용하기 위해서는 2가지 문법요소를 충족시켜야 한다.
    • this() 메서드는 반드시 생성자의 내부에서만 사용 가능하다.
    • this() 메서드는 생성자 내부의 첫 줄에 위치해야 한다.
// this() 메서드 사용 X
class Member {
    boolean isMember = false;
    String name;
    int age;
    String gender;
    // 회원이 정보 저장을 원하지 않을 경우
    public Member() {
        this.isMember = true;
    }
    // 이름만 저장
    public Member(String name) {
        this.isMember = true; // 위에서 작성한 기본 생성자와 동일
        this.name = name;
    }
    // 이름과 나이만 저장
    public Member(String name, int age) {
        this.isMember = true;
        this.name = name; // 생성자(String name)과 동일
        this.age = age;
    }
    // 모든 정보 저장
    public Member(String name, int age, String gender) {
        isMember = true;
        this.name = name;
        this.age = age; // 생성자(String name, int age)와 동일
        this.gender = gender;
    }
}

// this() 메서드 사용 O
class Member {
    boolean isMember = false;
    String name;
    int age;
    String gender;
    // 회원이 정보 저장을 원하지 않을 경우
    public Member() {
        this.isMember = true;
    }
    // 이름만 저장
    public Member(String name) {
        this(); // Member() 기본 생성자 호출
        this.name = name;
    }
    // 이름과 나이만 저장
    public Member(String name, int age) {
        this(name); // Member(String name) 생성자 호출
        this.age = age;
    }
    // 모든 정보 저장
    public Member(String name, int age, String gender) {
        this(name, age); // Member(String name, int age) 생성자 호출
        this.gender = gender;
    }
}
저작자표시 (새창열림)

'Langauge > Java-basic' 카테고리의 다른 글

[Java] 이너 클래스  (0) 2022.07.22
[Java] 외부 클래스  (0) 2022.07.21
[Java] 생성자  (0) 2022.07.20
[Java] 메서드 시그니처와 메서드 오버로딩  (0) 2022.07.19
[Java] 필드와 메서드  (0) 2022.07.18
    'Langauge/Java-basic' 카테고리의 다른 글
    • [Java] 이너 클래스
    • [Java] 외부 클래스
    • [Java] 생성자
    • [Java] 메서드 시그니처와 메서드 오버로딩
    강잇
    강잇
    학습한 내용을 정리 및 기록하는 블로그

    티스토리툴바