TIL/Java

TIL 2024-10-16 (Java 종합만 문법)

myoma 2024. 10. 16. 20:33

1 ) 접근제어자.

 

  • 제어자는  클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해준다.
    • 접근 제어자 : public, protected, default, private
    • 그 외 제어자 : static, final, abstract
      • 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용할 수 있다.

 

 

  • 접근 제어자 : 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한합니다.
    • 클래스, 멤버 변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default 입니다.
      • public : 접근 제한이 전혀 없습니다.
      • protected : 같은 패키지 내에서, 다른 패키지의 자손 클래스에서 접근이 가능.
      • default : 같은 패키지 내에서만 접근 가능.
      • private : 같은 클래스 내에서만 접근 가능.

 

 

  • 사용 가능한 접근 제어자
    • 클래스 : public, default
    • 메서드 & 멤버 변수 : public, protected, default, private
    • 지역 변수 : 없음

 

 

  • 접근 제어자를 이용한 캡슐화 (은닉성)
    • 접근제어자는 클래스 내부에 선언된 데이터를 보호하기 위해서 사용.
    • 유요한 값을 유지하도록, 함부로 변경하지 못하도록 접근을 제한하는 것이 필요.

 

 

  • 생성자의 접근 제어자
    • 생성자에 접근 제어자를 사용함으로 인스턴스의 생성을 제한할 수 있다.
    • 일반적으로 생성자의 접근 제어자는 클래스의 접근 제어자와 일치합니다.

 


2 ) Getter and Setter

  • 객체의 무결성 즉, 변경이 없는 상태를 유지하기 위해서 접근 제어자를 사용합니다.
    • 이때 외부에서 필드에 직접 접근하는 것을 막기 위해 필드에 private, default 등의 접근 제어자를 사용할 수 있습니다.

 

  • Getter : 외부에서 객체의 private 한 필드를 읽을 필요가 있을 때 Getter 메서드를 사용.
    • 메서드 이름의 규칙 : get + 필드 이름(첫 글자 대문자)
private double speed;  // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태


public String getModel() {
    return model;
}

public String getColor() {
    return color;
}

public double getPrice() {
    return price;
}

 

 

  • Setter : 외부에서 객체의 private 한 필드를 저장/수정할 필요가 있을 때 Setter 메서드를 사용합니다.
    • 메서드 이름의 규칙 : set + 필드 이름(첫 글자 대문자)
private double speed;  // 자동차 속도 , km/h
private char gear = 'P'; // 기어의 상태, P,R,N,D
private boolean lights; // 자동차 조명의 상태



public void setModel(String model) {
    this.model = model;
}

public void setColor(String color) {
    this.color = color;
}

public void setPrice(double price) {
    this.price = price;
}

 

  • 제어자의 조합
    • 사용 가능한 제어자
      • 클래스 : public, default, final, abstract
      • 메서드 : public, protected, default, private, final, abstract, static
      • 멤버 변수 : public, protected, default, private, final, static
      • 지역변수 : final
    • 사용 시 주의 사항.
      • 메서드에 static과 abstract를 함께 사용 불가.
      • 클래스에 abstract와 final을 동시에 사용 불가.
      • abstract 메서드의 접근 제어자가 private 불가.
      • 메서드 private와 final 을 같이 사용할 필요 없다.

 

 


3 ) this and this()

 

  • this : 객체 즉, 인스턴스 자신을 표현하는 키워드
    • 객체 내부 생성자 및 메서드에서 객체 내부 멤버에 접근하기 위해 사용될 수 있다.
    • 객체 내부 멤버에 접근할 때 this 키워드가 필수는 아니지만 상황에 따라 필수가 될 수 있다.
    • this는 인스턴스 자신을 뜻하기 때문에 객체의 메서드에서 리턴 타입이 인스턴스 자신의 클래스 타입이라면 this를 사용하여 인스턴스 자신의 주소를 반환할 수도 있다.

 

 

  • this() : 객체 즉, 인스턴스 자신의 생성자를 호출하는 키워드
    • 객체 내부 생성자 및 메서드에서 해당 객체의 생성자를 호출하기 위해 사용될 수 있다.
    • 생성자를 통해 객체의 필드를 초기화할 때 중복되는 코드를 줄일 수 있다.
    • 주의할 점!
      • this() 키워드를 사용해서 다른 생성자를 호출 할 때 반드시 해당 생성자의 첫 줄에 작성되어야 한다.
public Car(String model) {
    System.out.println("model = " + model);
    this(model, "Blue", 50000000);
}