[ Java ] 9장. this

ma.caron_g·2021년 10월 5일
0

Java

목록 보기
9/9
post-thumbnail

[ this ]

객체 자신에 대한 레퍼런스

-컴파일러에 의해 자동 관리, 개발자는 사용하기만 하면 됨

-this.멤버 형태로 멤버를 접근 할 때 사용


<this 사용 전>

public class Circle {
	int radius;
	public Circle() {
		radius = 1;
	}
	public Circle(int r) {
		radius = r;
	}
	double getArea() {
		return 3.14*radius*radius;
    }
...
}

<this 사용 후>

public class Circle {
	int radius;
	public Circle() {
		this.radius = 1;
	}
	public Circle(int radius) {
		this.radius = radius;
	}
	double getArea() {
		return 3.14*this.radius*this.radius;
    }
...
}

<this를 이용한 기본 값 수정>

public class Circle {
    int radius;
    public Circle(int radius) {
    	this.radius = radius;
    }
    void set(int radius) {
    	this.radius = radius;
    }
    void print() {
    	System.out.println(radius);
    }
   	
    public static void main(String args[]) {
        Circle ob1 = new Circle(1);	// ob1의 radius = 1;
        Circle ob2 = new Circle(2);	// ob2의 radius = 2;
        Circle ob3 = new Circle(3);	// ob3의 radius = 3;
        
        ob1.set(4);	// ob1의 radius = 4;
        ob2.set(5); // ob2의 radius = 5;
        ob3.set(6); // ob3의 radius = 6;
        
        ob1.output();	// 4
        ob2.output();	// 5
        ob3.output();	// 6
    }
}
        

[ this()로 다른 생성자 호출 ]

같은 클래스의 다른 생성자 호출

  • 생성자 내에서만 사용 가능
  • 생성자들 중 제일 처음에 선언 돼 있어야 함
public class Book {
	String title;
	String author;

	void show() {
		System.out.println(title + " " + author);
	}

	public Book() {
		this("무제", "지은이 없음");
		System.out.println("생성자 호출됨");
	}

	public Book(String title) {
		this(title, "작자미상");
	}

	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}

	public static void main(String[] args) {
		Book littlePrince = new Book("어린왕자", "생텍쥐페리");
		Book loveStory = new Book("춘향전");
		Book emptyBook = new Book();
		littlePrince.show();
		loveStory.show();
		emptyBook.show();
		
	}
}

출력

생성자 호출됨
어린왕자 생텍쥐베리
춘향전 작자미상
무제 내용없음

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글