자바 - 클래스 속성
안녕하세요, 미래의 자바 마법사 여러분! 오늘은 자바 클래스 속성의 흥미로운 세계로 여행을 떠날 거예요. 프로그래밍에 새로운 여러분도 걱정하지 마세요. 저는 여러분의 친절한 가이드가 될 거예요. 점점 이 주제를 탐구해 볼 거예요. 그럼, 가상의 지팡이(키보드)를 잡고, 함께 빠져들어 볼까요!
클래스 속성이란 무엇인가요?
코드에 들어가기 전에, 클래스 속성이란 무엇인지 이해해 보죠. 게임에서 가상의 펫을 만드는 것을 상상해 보세요. 여러분의 펫은 이름, 나이, 색상과 같은 특정한 특성을 가질 거예요. 자바에서는 이러한 특성들을 속성이나 클래스의 필드라고 부릅니다.
클래스 속성은 클래스에 속하는 변수로, 해당 클래스로 만들어진 객체들의 프로퍼티를 정의합니다. 이러한 속성들은 객체들의 유일성을 정의하는 DNA와 같아요.
자바 클래스 속성 생성(선언)
가상의 펫의 간단한 클래스를 만들어 보겠습니다:
public class VirtualPet {
String name;
int age;
String color;
}
이 예제에서는 세 개의 속성을 선언했습니다: name
, age
, color
. 이러한 속성들은 VirtualPet
클래스로 만들어진 모든 객체에서 사용할 수 있습니다.
접근 제어자
여러분이 속성 앞에 특별한 키워드를 사용하지 않았다는 것을 알아채셨나요? 자바에서는 접근 제어자를 사용하여 속성의 가시성을 제어할 수 있어요. 우리의 클래스를 수정해 보죠:
public class VirtualPet {
public String name;
private int age;
protected String color;
}
이러한 수정자들의 의미는 다음과 같습니다:
-
public
: 어떤 다른 클래스에서도 접근할 수 있는 속성입니다. -
private
: 같은 클래스 내에서만 접근할 수 있는 속성입니다. -
protected
: 같은 패키지와 서브 클래스에서 접근할 수 있는 속성입니다.
만약 우리가 수정자를 지정하지 않으면, 패키지-프라이빗으로 기본 설정되며, 같은 패키지 내에서 접근할 수 있습니다.
자바 클래스 속성 접근
이제 우리는 속성을 가지고 있으므로, 이를 어떻게 접근할 수 있는지 살펴보겠습니다. main
메서드를 만들어 보여주겠습니다:
public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet();
myPet.name = "Fluffy";
System.out.println("My pet's name is " + myPet.name);
}
}
이 코드를 실행하면 다음과 같은 출력이 나옵니다: "My pet's name is Fluffy"
점 표기법(myPet.name
)을 사용하여 myPet
객체의 name
속성에 접근하는 방법을 알 수 있습니다.
자바 클래스 속성 수정
속성에 접근하는 것만큼 수정하는 것도 매우 쉬워요. 우리의 펫의 이름을 변경해 보겠습니다:
public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet();
myPet.name = "Fluffy";
System.out.println("My pet's name is " + myPet.name);
myPet.name = "Whiskers";
System.out.println("My pet's new name is " + myPet.name);
}
}
이 코드는 다음과 같은 출력을 냅니다:
My pet's name is Fluffy
My pet's new name is Whiskers
자바 클래스 속성을 읽기 전용으로 만들기
때로는 속성이 초기 설정된 후에 변경되지 않도록 막고 싶을 때가 있어요. 이를 위해 final
키워드를 사용할 수 있습니다:
public class VirtualPet {
public final String species;
public String name;
private int age;
protected String color;
public VirtualPet(String species) {
this.species = species;
}
}
이 업데이트된 클래스에서는 생성자에서 설정된 후에 변경할 수 없는 species
속성을 추가했습니다. 이를 action에서 살펴보겠습니다:
public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet("Cat");
System.out.println("My pet is a " + myPet.species);
// 이 코드는 컴파일 에러를 발생시킵니다:
// myPet.species = "Dog";
}
}
클래스 속성的最佳实践
- 캡슐화: 일반적으로 속성을 private으로 하고, 접근 및 수정을 위한 공개 메서드를 제공하는 것이 좋습니다. 이를 캡슐화라고 합니다.
public class VirtualPet {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) {
this.age = age;
}
}
}
- 초기화: 항상 속성을 선언할 때나 생성자에서 초기화하세요.
public class VirtualPet {
private String name = "Unnamed";
private int age = 0;
public VirtualPet(String name, int age) {
this.name = name;
this.age = age;
}
}
- 의미 있는 이름 사용: 속성 이름은 그것이 의미하는 것을 명확하게 설명하는 것이 좋습니다.
결론
그렇게 끝나버렸어요, 여러분! 자바 클래스 속성의 기본 개념을 다루었어요. 속성은 여러분의 객체의 특성과 같아요. 이는 public, private, 또는 protected일 수 있으며, final
키워드를 사용하여 읽기 전용으로 만들 수 있습니다.
자바 여행을 계속하면서, 클래스 속성을 잘 이해하는 것은 잘 구성된 및 유지 가능한 코드를 작성하는 데 중요합니다. 계속 연습하면, 쉽게 복잡한 객체를 만들 수 있을 거예요!
이제 여러분과 헤어지기 전에, 이 강의를 기억하게 할 작은 개그를 드릴게요: 자바 속성이 왜 외롭지? private이고 누구도 접근할 수 없기 때문이지!
코딩을 즐겁게, 속성들이 항상 잘 캡슐화되길 바랍니다!
Credits: Image by storyset