[Java] Class

2024. 2. 7. 15:45Memorizing/Java

728x90

본 포스팅은 Java에서 필수적인 요소인 Class의 개념과 여러 요소에 대해 다룹니다.

Java는 모든 것이 클래스로 이루어져있는 클래스의 집합체라고해도 과언이 아닙니다. 따라서 클래스의 개념과 특징에 대해 잘 알아보는 것은 중요하다고 할 수 있습니다.

클래스 설계

클래스를 만들기 위해선 4가지 절차를 거칩니다.

  1. 클래스 선언: 만들고자 하는 클래스 파일을 만들고 클래스를 선언합니다.
  2. 필드 정의: 클래스가 만든 객체(인스턴스)가 가져야할 필드를 정의합니다.
  3. 생성자 정의: 객체를 생성하는 생성자를 정의합니다. -> 생성자를 정의하지않으면 기본 생성자를 Java compiler가 작성하여줍니다.
  4. 메서드 정의: 객체가 가지고있어야할 메서드를 정의합니다.

생성자

생성자는 클래스가 선언될 때, 초기화하는 역할을 수행합니다. 아래와 같이 생성자를 정의하게 되면, 클래스를 생성할 때, modelName, colorName을 받아 객체(this)의 초기값으로 사용하게됩니다. 

아래의 코드에서 Car라는 생성자를 두 개 작성하였습니다. 이와 같이 같은 이름의 생성자를 매개변수를 다르게 해서 생성하는 것을 '생성자 오버로딩'이라고 말합니다.

private String colorName;
private String modelName;

public Car(String modelName, String colorName) {
        this.modelName = modelName;
        this.colorName = colorName;

}

public Car() {
    System.out.println("기본 생성자가 생성되었습니다");

}

접근 제어자

접근 제어자 클래스 내부에 선언된 데이터를 보호하기 위해 사용됩니다. 접근 제어자의 종류와 특징은 아래와 같습니다.

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

위의 예시에서 클래스의 colorName, modelName 필드가 private 접근 제어자로 선언되었기 때문에 객체를 생성한 뒤, 아래와 같이 접근할 수 없습니다.

Car car1 = new Car("Benz", "Red");
System.out.println("car1 model name: " + car1.colorlName); // 가능
System.out.println("car1 model name: " + car1.modelName); // 불가능

따라서 아래와 같이 get 함수를 이용하여 클래스의 private으로 선언된 필드를 접근하도록 약속합니다. 

public String colorName;
private String modelName;

public Car(String modelName, String colorName) {
    this.modelName = modelName;
    this.colorName = colorName;

}

public Car() {
    System.out.println("기본 생성자가 생성되었습니다");

}
public String getModelName() {
    return modelName;
}

'Memorizing > Java' 카테고리의 다른 글

[Java] 프로세스와 스레드 - 2  (0) 2024.02.17
[Java] 프로세스와 스레드 - 1  (0) 2024.02.17
[Java] 상속  (1) 2024.02.07
[Java] Collection  (0) 2024.02.07
[Java] Array  (0) 2024.02.07