Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SwingCalendar
- 컬렉션프레임워크
- 깃허브
- jcenter
- 생성자
- JPA Auditing
- Swing
- 템플릿엔진
- 메소드
- 바인드변수
- 상속
- 백준
- 서버
- JavaScript
- HTML모드
- 클래스
- 클라이언트
- mavenCentral
- springboot
- springDataJPA
- 멀티쓰레드
- 카카오코딩테스트
- Oracle
- java
- socket
- 자바
- Spring
- 코딩
- 인스턴스
- 사용자관리프로그램
Archives
- Today
- Total
프리 정보 컨텐츠
자바 생성자와 this의 개념 정리 본문
생성자
인스턴스가 생성되는 시점에 파일을 지정할 수밖에 없는 조건을 만들어준다
클래스를 사용하는 사람이 대상이 되는 파일을 지정하는 것을 까먹지 않을 수 있으며,
인스턴스가 생성될 때 반드시 처리해야 될 작업을 초기 값 또는 실행 되어야하는 작업을 할 때 생성자를 사용한다.
생성자를 사용할 때는 클래스의 이름과 똑같은 메소드를 정의한다.
class Print {
public String delimiter = "";
public Print(String delimiter) { // 생성자 생성
this.delimiter = delimiter;
}
public void A() {
System.out.println(this.delimiter);
System.out.println("A");
System.out.println("A");
}
}
this 는 클래스가 인스턴스화 되었을 때의 인스턴스를 가르키는 특수한 이름이다.
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print("----");
p1.A();
}
메인 클래스에서 프린트 메소드에 매개변수로써 delimiter("----") 를 받는다.
Print 클래스의 delimiter 인스턴스 변수는 this 를 통해서 인스턴스를 가르킨다.
즉, this 는 생성한 인스턴스를 가르키는 역할을 구분해준다.
생성자를 사용하지 않을 경우에는 아래 코드를 예시로 들 수있다.
public class MyOOP {
public static void main(String[] args) {
Print p1 = new Print();
p1.delimiter = "----";
p1.A();
}
생성자를 사용하는 이유와 사용했을 때의 차이점을 정확히 구분해두자.
한 가지의 예를 더 들어보자면,
Public class Car {
String name;
int number;
public Car(String n) { // 생성자 생성
name = name;
}
}
n 으로 지정한 경우에 코드의 가독성이 어려우므로 알아보기 쉽게 name 을 사용한다.
Public class Car {
String name;
int number;
public Car(String name) { // 생성자 생성
name = name; // name = name 형식이 되므로 this.name 사용
}
}
name = name 형식이 되므로 출력할 때에 컴파일 오류가 생긴다.
앞에 name 은 앞에 정의된 필드 name 으로 정의하고 싶으므로
매개변수와 구분짓는 name 을 사용해야한다.
이때, 정확한 name 을 구분짓기위해서 this.name 을 붙여준다.
this = 객체 자신을 참조하는 키워드
Comments