[JAVA] 객체지향 - this

2024. 8. 31. 01:17·Back-End/Java

[작성일: 2023. 01. 25]

 

 

생성자 this()

  • 같은 클래스 생성자에서 다른 생성자를 호출할 때 사용
    • 클래스 이름 대신 this() 사용
  • 다른 생성자 호출 시 첫 줄에서만 사용 가능
    • 첫 줄이 아닐 경우 에러.
  • 코드 중복을 제거하기 위해 생성자들끼리 서로 호출함.
class Car2 {
  String color;
  String gearType;
  int door;
    
  Car2() {
    this("white", "auto", 4);
  } 
  // Car2(String color, String gearType, int door)를 호출
  	
  Car(String color) {
    this(color, "auto", 4);
  }
  // Car2(String color, String gearType, int door)를 호출 
    
  Car2(String color, String gearType, int door) {
    this.color = color;
    this.gearType = gearType;
    this.door = door;
  }
}

// 1번과 2번 생성자가 3번을 호출함.
// Car2대신에 this를 작성
// 같은 클래스 안에 있는 생성자끼리 호출할 땐 this를 사용함(규칙)

 

class Car {
  String color;
  String gearType;
  int door;
    
  Car() { // 값 지정 없음.
  color = "white";
  gearType = "auto";
  door = 4;
  // 기본 생성자 : iv의 값을 주지 않았기 때문에 디폴트 값으로 초기화
 }
 
 
⬇

class Car {
  String color;
  String gearType;
  int door;

  Car() {
  // Car("white", "auto", 4);
    this("white", "auto", 4);
  }
  // 코드의 중복을 제거한코드

  Car(String c, String g, int d) {
    color = c;
    gearType = g;
    door = d;
  }
}

 

 

 

 

 

참조변수 this

  • 인스턴스 자신을 가리키는 참조변수
  • 인스턴스의 주소가 저장되어 있음.
  • 모든 인스턴스 메서드에 지역변수로 숨겨진 채 존재함.
    • 따로 선언하지 않아도 사용 가능.
  • 생성자 this()와 전혀 관련 없음.
  • 인스턴스 메서드(생성자 포함)에서만 사용 가능.
  • 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
  • 같은 클래스 안에서는 생략 가능하지만 항상 사용하는 연습하기
  • static 메서드에는 iv 사용 불가 ➡️ this도 사용 불가
Car(String c, String g, int d) {
  // color는 iv, c는 lv
  color = c;
  gearType = g;
  door = d;
}

⬇

Car(String color, String gearType, int door) {
  // this.color는 iv, color는 lv
  this.color = color;
  this.gearType = gearType;
  this.door = door;
}

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Java' 카테고리의 다른 글
  • [JAVA] 변수 초기화
  • [JAVA] 객체지향 - 오버로딩
  • [JAVA] 객체지향 - 메서드
  • [JAVA] 객체지향 - 역사, 인스턴스, 클래스
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    알고리즘
    다형성
    DB
    변수
    게시판만들기
    Database
    sql
    spring
    HTTP
    객체
    JPA
    김영한
    최주호
    데이터베이스
    의존성주입
    자바
    자바스크립트
    html
    스프링
    javascript
    생성자
    Java
    Security
    jsp
    백준
    성능최적화
    MVC
    프로그래머스
    Swift
    Spring Security
  • hELLO· Designed By정상우.v4.10.0
뚜비
[JAVA] 객체지향 - this
상단으로

티스토리툴바