Java - Thuộc tính lớp

Xin chào các nhà phép thuật Java tương lai! Hôm nay, chúng ta sẽ bắt đầu hành trình thú vị vào thế giới các Thuộc tính lớp Java. Đừng lo nếu bạn mới bắt đầu học lập trình; tôi sẽ là người hướng dẫn bạn, và chúng ta sẽ khám phá chủ đề này bước به bước. Vậy, hãy nắm chắc chiếc cây cơBan hình ảo của bạn (bàn phím) và chúng ta sẽ bắt đầu!

Java - Class Attributes

Thuộc tính lớp là gì?

Trước khi bước vào mã, hãy hiểu rõ về thuộc tính lớp là gì. Hãy tưởng tượng bạn đang tạo một sinh vật ảo trong một trò chơi. Sinh vật của bạn sẽ có một số đặc điểm như tên, tuổi và màu sắc. Trong Java, các đặc điểm này được gọi là thuộc tính hoặc trường của một lớp.

Các thuộc tính lớp là các biến thuộc về lớp và xác định các thuộc tính của các đối tượng được tạo từ lớp đó. Chúng giống như DNA của các đối tượng của bạn, xác định điều gì làm cho mỗi đối tượng độc đáo.

Tạo ( khai báo) Thuộc tính lớp Java

Hãy bắt đầu bằng cách tạo một lớp đơn giản cho sinh vật ảo của chúng ta:

public class VirtualPet {
String name;
int age;
String color;
}

Trong ví dụ này, chúng ta đã khai báo ba thuộc tính: name, age, và color. Các thuộc tính này sẽ có sẵn cho tất cả các đối tượng được tạo từ lớp VirtualPet.

Các phạm vi truy cập

Bạn có thể nhận ra rằng chúng ta không sử dụng các từ khóa đặc biệt trước các thuộc tính của mình. Trong Java, chúng ta có thể sử dụng các phạm vi truy cập để kiểm soát khả năng truy cập của các thuộc tính của mình. Hãy điều chỉnh lớp của chúng ta:

public class VirtualPet {
public String name;
private int age;
protected String color;
}

Dưới đây là ý nghĩa của các điều chỉnh này:

  • public: Thuộc tính có thể truy cập từ bất kỳ lớp nào khác.
  • private: Thuộc tính chỉ có thể truy cập trong cùng một lớp.
  • protected: Thuộc tính có thể truy cập trong cùng một gói và các lớp con.

Nếu chúng ta không xác định một điều chỉnh, nó mặc định là package-private, có nghĩa là nó có thể truy cập trong cùng một gói.

Truy cập các Thuộc tính lớp Java

Bây giờ đã có các thuộc tính của mình, hãy xem cách chúng ta có thể truy cập chúng. Chúng ta sẽ tạo một phương thức main để minh họa điều này:

public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet();
myPet.name = "Fluffy";
System.out.println("Tên của sinh vật của tôi là " + myPet.name);
}
}

Khi bạn chạy mã này, nó sẽ đầu ra: "Tên của sinh vật của tôi là Fluffy"

Nhận ra cách chúng ta sử dụng dấu chấm (myPet.name) để truy cập thuộc tính name của đối tượng myPet của chúng ta.

Chỉnh sửa các Thuộc tính lớp Java

Chỉnh sửa các thuộc tính đơn giản như truy cập chúng. Hãy thay đổi tên sinh vật của chúng ta:

public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet();
myPet.name = "Fluffy";
System.out.println("Tên của sinh vật của tôi là " + myPet.name);

myPet.name = "Whiskers";
System.out.println("Tên mới của sinh vật của tôi là " + myPet.name);
}
}

Điều này sẽ đầu ra:

Tên của sinh vật của tôi là Fluffy
Tên mới của sinh vật của tôi là Whiskers

Làm cho các Thuộc tính lớp Java chỉ đọc

Đôi khi, chúng ta muốn ngăn các thuộc tính khỏi việc thay đổi sau khi chúng được đặt ban đầu. Chúng ta có thể đạt được điều này bằng cách sử dụng từ khóa final:

public class VirtualPet {
public final String species;
public String name;
private int age;
protected String color;

public VirtualPet(String species) {
this.species = species;
}
}

Trong lớp đã cập nhật này, chúng ta đã thêm một thuộc tính species không thể thay đổi sau khi được đặt trong constructor. Hãy xem nó hoạt động:

public class VirtualPetDemo {
public static void main(String[] args) {
VirtualPet myPet = new VirtualPet("Cat");
System.out.println("Sinh vật của tôi là một " + myPet.species);

// Điều này sẽ gây ra lỗi biên dịch:
// myPet.species = "Dog";
}
}

Các thực hành tốt cho các Thuộc tính lớp

  1. Đóng gói: Nói chung, việc làm các thuộc tính của bạn là private và cung cấp các phương thức công khai để truy cập và chỉnh sửa chúng là một thực hành tốt. Điều này được gọi là đóng gói.
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;
}
}
}
  1. Khởi tạo: Luôn khởi tạo các thuộc tính của bạn, yaither khi khai báo hoặc trong constructor.
public class VirtualPet {
private String name = "Unnamed";
private int age = 0;

public VirtualPet(String name, int age) {
this.name = name;
this.age = age;
}
}
  1. Sử dụng các tên có ý nghĩa: Chọn các tên thuộc tính mô tả rõ ràng về điều gì chúng đại diện.

Kết luận

Và thế là đã, các bạn! Chúng ta đã bao gồm các khái niệm cơ bản về Thuộc tính lớp Java. Nhớ rằng, các thuộc tính giống như các đặc điểm của các đối tượng của bạn. Chúng có thể là công khai, private hoặc được bảo vệ, và bạn thậm chí có thể làm chúng chỉ đọc bằng cách sử dụng từ khóa final.

Khi bạn tiếp tục hành trình Java của mình, bạn sẽ thấy rằng việc kháng phục các thuộc tính lớp là rất quan trọng để tạo ra mã có cấu trúc và dễ bảo trì. Hãy tiếp tục tập luyện, và sớm bạn sẽ tạo ra các đối tượng phức tạp một cách dễ dàng!

Trước khi chúng ta rời xa nhau, dưới đây là một câu chuyện nhỏ để nhớ lại bài học này: Tại sao thuộc tính Java cảm thấy cô đơn? Vì nó là private và không ai có thể truy cập nó!

Chúc mãi mãi mã nguồn, và may các thuộc tính của bạn luôn được đóng gói tốt!

Credits: Image by storyset