this
this 참조 변수
- 현재 객체 자신을 가르키는 참조 변수이다.
- 생성자에서 매개 변수 이름과 필드 이름이 동일한 경우에 혼동을 막기 위해서 사용한다.
- this는 heap을 가르킨다고 봐도 무방하다.
this()
- this()는 다른 생성자를 의미한다.
- 흔히 가장 복잡한 생성자를 먼저 작성한 후에, 다른 생성자에서 복잡한 생성자를 호출 할 때 주로 사용한다.
this() 사용 시 주의 사항
1. 반드시 생성자 안에서만 호출이 가능하다.
2. 반드시 첫 번째 문장이어야 한다.
3. 다른 생성자를 호출할 때만 사용하여야 한다.
this 참조 변수와 this() 사용 예시
public class Circle { int radius; // a) radius public Circle(int radius) { this.radius = radius; // this.radius는 밖의 a) radius를 뜻한다. } public Circle() { this(0); // 위의 생성자 호출 Circle(0)을 호출한다. } double getArea() { return 3.14 * radius * radius; } }
접근 제어(Access Control)
- 클래스의 멤버에 접근하는 것을 제어하는 것이다.
- 접근 제어 지정자로는 public, private, protected 가 있다.
접근 지정자 | 해당 클래스 안 | 패키지 | 자식 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | X |
없음 | O | O | X | X |
private | O | X | X | X |
클래스의 멤버에 대한 접근을 제어하는 것은 개체 지향 프로그래밍의 핵심이다!
접근 제어를 하게 되면?
1. 객체를 잘못 사용하는 것을 방지할 수 있다.
2. 올바르게 정의된 메서드만 데이터를 사용할 수 있게 하여 데이터가 부적절한 값으로 변경되는 것을 막을 수 있다.
접근자와 설정자
정보 은닉(Information Hiding)
- 구현의 세부 사항을 클래스 안에 감추는 것이다.
- 클래스 안의 데이터를 외부에서 마음대로 변경하지 못하게 하는 것이 예시이다.
접근자와 설정자를 사용하는 이유?!
1. 접근자와 설정자를 사용해야만 나중에 클래스를 업그레이드할 때 편하다.
2. 접근자에서 매개 변수를 통하여 잘못된 값이 넘어오는 경우, 이를 사전에 차단할 수 있다.
3. 필요할 때마다 필드 값을 동적으로 계산하여 반환할 수 있다.
4. 접근자만을 제공하면 자동적으로 읽기만 가능한 필드를 만들 수 있다.
접근자와 설정자 예시 코드
package ex04; public class Account { private int regNumber; private String name; private int balance; // 모두 private로 선언 되어 클래서 내부에서만 사용 가능 public String getName() { return name; } // 접근자 public void setName(String name) { this.name = name; } // 설정자 public int getBalance() { return balance; } // 접근자 public void setBalance(int balance) { this.balance = balance; } // 설정자 } class AccountTest { public static void main(String[] args) { Account obj = new Account(); obj.setName("Tom"); obj.setBalance(100000); System.out.println ("이름은 " + obj.getName() + " 통장 잔고는 " + obj.getBalance() + "입니다."); } }
출력 결과
![notion image](https://inblog.ai/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fhttps%253A%252F%252Fprod-files-secure.s3.us-west-2.amazonaws.com%252Fb1939378-3cd6-4f1f-9032-6c4df0711232%252Fdc4fe61f-f956-41bc-9f07-8e05fdae04b3%252FUntitled.png%3Ftable%3Dblock%26id%3Da360b010-f51d-4bc5-8b69-96fa3c6ad6c7%26cache%3Dv2&w=3840&q=75)
Share article