Trường lớp
Bản chất của lập trình hướng đối tượng là biểu diễn chương trình dưới dạng tương tác của đối tượng.
 
Một đối tượng là một loại thực thể nào đó có các thuộc tính nhất định và các thao tác nhất định trên đó.

Các đối tượng ban đầu được tạo ra để mô phỏng thực tế: nhiều thứ xung quanh chúng ta có thể được biểu diễn dưới dạng một đối tượng. Ví dụ: một cuốn sách bạn đọc gần đây có thể được coi là một đối tượng có các thuộc tính 'tên', 'tác giả', 'xếp hạng theo độ tuổi', 'văn bản của cuốn sách', 'số trang', v.v. có thể thực hiện các thao tác như "đọc sách", "đốt sách", v.v.
Theo thuật ngữ của ngôn ngữ lập trình Java, các "thuộc tính" này được gọi là trường và các thao tác trên đối tượng được gọi là phương thức.
Vì Java là một ngôn ngữ được gõ tĩnh, bất kỳ đối tượng nào cũng phải được tạo theo một số mẫu. Trong Java, các mẫu như vậy là lớp. Lớp mô tả những trường mà một loại đối tượng nhất định có thể có và những thao tác nào được xác định trên đó.
Sự khác biệt giữa lớp đối tượng tương tự như sự khác biệt giữa "car" và "Toyota Camry đậu ở tòa nhà thứ 5 trên phố Cheburekovo".

Xem xét quy trình tạo lớp đối tượng của riêng bạn với các trường trong Java. Sách học { tên chuỗi; Tên tác giả chuỗi; int ageYêu cầu; Chuỗi văn bản; int trangCount; } Mã này tạo lớp"Sách". đối tượngcủa lớp «Sách» có hai thuộc tính số nguyên (có tên là «ageRequirement» và «pageCount») và ba thuộc tính loại «String» (với các tên "tên", "tên tác giả" và "văn bản".
Cú pháp chung để tạo một lớp có các trường như sau.
  lớp <tên lớp> { <loại thuộc tính đầu tiên> <tên thuộc tính đầu tiên> <loại thuộc tính thứ hai> <tên thuộc tính thứ hai> &helli; <loại thuộc tính cuối cùng> <tên thuộc tính cuối cùng> }

Tất nhiên, trong Java, bạn có thể tạo các lớp không chỉ theo cách này (còn có các phương thức, công cụ sửa đổi truy cập, v.v.), mà còn nhiều hơn thế nữa sau này.

Phương thức của lớp
Các thao tác trên đối tượng trong Java được gọi là phương thức. Các phương thức giống như các hàm toán học: chúng có thể lấy các đối sốtrả về một giá trị. Mặt khác, các phương thức trong Java cũng có quyền truy cập vào tất cả các trường của một đối tượng.

Để tạo một phương thức trong một lớp, bạn phải đưa nó vào lớp. Ví dụ: chúng ta có thể xác định phương thức print(age) sẽ in thông tin về cuốn sách của chúng ta và hiển thị cảnh báo nếu người dùng chưa đủ tuổi đọc cuốn sách đó.

    lớp học Sách
    {
        Tên chuỗi;
        Tên tác giả chuỗi;
        int ageYêu cầu;
        Chuỗi văn bản;
        int pageCount;
        // tạo phương thức in
        vô hiệu in(int tuổi)
        {
            Hệ thống.ra.< span style="color:#7d9029">println("Tên: " +tên);
            Hệ thống.ra.< span style="color:#7d9029">println("Tác giả: " +Tên tác giả);
            Hệ thống.ra.< span style="color:#7d9029">println("Số trang: "+Số nguyên.toString(Yêu cầu về độ tuổi);
            // mã xác minh ở đây
        }
    }
 
Hãy phân tích cú pháp để tạo một phương thức.
1) Dòng đầu tiên của phương thức là chữ ký.
2) Kiểu trả về của phương thức được viết trước. Phương thức của chúng tôi không trả về bất kỳ giá trị nào, vì vậy chúng tôi viết void.
3) Sau đó, trong chữ ký là tên của phương thức (print).
4) Trong ngoặc có liệt kê các đối số. Các đối số được phân tách bằng dấu phẩy. Đối với mỗi đối số, loại và tên của nó được chỉ định, cách nhau bởi khoảng trắng. Trong trường hợp của chúng ta, chỉ có một đối số, nó có kiểu int và tên age nên không có dấu phẩy.
5) Sau đó là mã phương thức trong dấu ngoặc nhọn. Để trả về một giá trị từ một phương thức, hãy viết return <value>;. Trong ví dụ này, phương thức không trả về bất cứ thứ gì, vì vậy có thể bỏ qua return . Để kết thúc sớm việc thực thi một phương thức, bạn có thể viết return;.
6) Trong bản thân lớp, chúng ta có thể tham chiếu đến các trường của đối tượng của lớp này theo tên.

Công cụ sửa đổi truy cập
Theo mặc định, tất cả trườngphương thức của một lớp trong Java là riêng tư. Điều này có nghĩa là không ai có thể truy cập chúng, nghĩa là ngoài các đối tượng của lớp này, không phương thức nào có thể sử dụng các trường và phương thức của các đối tượng của lớp này.

Các trường và phương thức có thể được đặt ở chế độ công khai bằng công cụ sửa đổi quyền truy cập công khai. Ngoài ra còn có một công cụ sửa đổi riêng tư làm cho trường ở chế độ riêng tư. Nó là tùy chọn vì tất cả các trường và phương thức đều ở chế độ riêng tư theo mặc định. Dưới đây là một ví dụ về việc sử dụng công cụ sửa đổi public private. Sách học { tên chuỗi công khai; Tên tác giả chuỗi; private int ageYêu cầu; Chuỗi văn bản; trang int công khai; int getTextLength() { trả về độ dài văn bản(); } công khai int getAverageLetterCount() { trả về getTextLength() / pageCount; } int riêng getDifficuiltyLevel() { trả về 5 * ageRequirement * text.Length(); } }
Trong phiên bản này của lớp Book , các trường name và pageCount được công khai để đọc và sửa đổi trong các đối tượng khác. Phương thức getAverageLetterCount() cũng có thể được gọi từ các đối tượng của các lớp khác. Tất cả các trường và phương thức khác vẫn ở chế độ riêng tư và chỉ khả dụng trong các phương thức của lớp này. Trong phương thức chung getAverageLetterCount() chúng ta có thể gọi phương thức riêng getTextLength()getAverageLetterCount() thuộc về chính lớp đó. Nhưng nó sẽ không hoạt động từ một phương thức của lớp khác.

Nhưng tại sao sau đó đặt các trường ở chế độ riêng tư? Trong mã Java, hầu như bạn sẽ chỉ thấy các trường riêng tư. Thực tế là nếu quyền truy cập vào các trường riêng tư được thực hiện thông qua các phương thức công khai của đối tượng, thì với bất kỳ quyền truy cập nào như vậy vào các trường riêng tư, sẽ có thể thực hiện các hành động và kiểm tra bổ sung. Thông tin thêm về điều này sẽ có trong bài học về đóng gói.

Các bài học cho đến nay đã thảo luận về việc tạo các lớp, là các mẫu để tạo các đối tượng. Trong cùng một bài học, quá trình tạo và sử dụng các đối tượng sẽ được mô tả.

Liên kết
Trong ngôn ngữ Java, một biến không bao giờ có thể lưu trữ một đối tượng. Thay vào đó, Java có các tham chiếu trỏ đến vị trí của một đối tượng trong bộ nhớ.
Cú pháp tạo một biến kiểu tham chiếu đối tượng như sau:
<Tên lớp> <tên biến>;
Điều đáng chú ý là chúng ta chỉ ra ngay lớp có đối tượng sẽ được tham chiếu.

Ví dụ: một biến có tên "b" trỏ đến lớp Sách:

Sách b;

Theo cách tương tự, bạn có thể tạo các trường lớp (bạn có thể thêm một công cụ sửa đổi truy cập ở đó). Bạn có thể tạo các mảng tham chiếu và trả về chúng từ các phương thức. Ví dụ:

công khai lớp Thư viện {
  Sách công khai [] sách;
  Sách công khai findBookWithName(Tên chuỗi) {
//mã tìm đúng cuốn sách
  }
};


Kết luận: theo nhiều cách, bạn có thể làm việc với các tham chiếu giống như với các biến thuộc các kiểu cơ bản khác (int, long, double...).