inblog logo
|
chodong
    java

    025_this 참조 변수와 this()

    Dec 20, 2023
    025_this 참조 변수와 this()
    Contents
    this접근자와 설정자

    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)

    • 구현의 세부 사항을 클래스 안에 감추는 것이다.
    • 클래스 안의 데이터를 외부에서 마음대로 변경하지 못하게 하는 것이 예시이다.

    접근자(Getters)

    • 필드 값을 반환한다.
    • get을 메소드 앞에 붙여 사용한다. ex) getNumber()

    설정자(Setters)

    • 필드 값을 설정한다.
    • set을 메소드 앞에 붙여 사용한다. ex) setNumber()
    ☝
    접근자와 설정자를 사용하는 이유?! 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
    Share article

    chodong

    RSS·Powered by Inblog