Trong hành trình lập trình Java, hãy cùng Mytour khám phá thế giới của lớp và đối tượng. Bài viết này sẽ đưa bạn qua những khái niệm quan trọng để xây dựng ứng dụng Java một cách linh hoạt và hiệu quả.
Java, nơi mà mỗi lớp là một câu chuyện và mỗi đối tượng là một nhân vật. Bắt đầu hành trình của bạn ngay bây giờ!
Hành Trình Java: Khám Phá Lớp và Đối Tượng
- Đa Dạng Hóa Học (Polymorphism).
- Di Truyền Học (Inheritance).
- Gói Hóa (Encapsulation).
- Trừu Tượng Hóa (Abstraction).
- Hội Các Lớp (class).
- Cộng Đồng Các Đối Tượng (Object).
- Biến Thể Thực Thể.
- Hội Nhóm Phương Thức.
- Giải Mã Thông Điệp (Message Decoding).
- Đối Tượng (object): Tưởng tượng về đối tượng như những nhân vật trong một câu chuyện, mỗi người có trạng thái và hành vi riêng biệt.
- Lớp (class): Là bản thiết kế độc đáo, mô tả cách một nhóm đối tượng sẽ hoạt động và tương tác.
Vật Thể trong Ngôn Ngữ Java
Để rõ hơn về khái niệm về vật thể trong Java, hãy tưởng tượng chúng như các đồ vật trong thế giới thực. Có thể kể đến ô tô, con người, các loài vật, ... Tất cả đều có trạng thái và hành vi riêng.
So sánh đối tượng phần mềm với đối tượng thực tế, chúng có nhiều điểm tương đồng.
Đối tượng phần mềm cũng có trạng thái được lưu trữ qua các trường và hành vi được thể hiện qua các phương thức.
Do đó, khi phát triển phần mềm, các phương thức hoạt động trong trạng thái nội bộ của đối tượng và giao tiếp giữa chúng sử dụng các phương thức.
Nền Tảng Lập Trình trong Java
Một nền tảng lập trình là một bản thiết kế (Blueprint) mà từ đó mỗi đối tượng được tạo ra.
Dưới đây là một ví dụ đơn giản về nền tảng lập trình trong Java:
Một lớp trong Java có khả năng chứa các biến như sau:
- Biến địa phương (Local variables): Các biến được định nghĩa bên trong các phương thức, constructor hoặc các block được gọi là biến địa phương. Chúng được khai báo và khởi tạo trong phương thức và sẽ bị hủy sau khi phương thức hoàn tất.
- Biến thể hiện (Instance variables): Các biến thể hiện là các biến nằm trong một lớp nhưng ở ngoài các phương thức. Chúng được khởi tạo khi lớp được khởi tạo và có thể truy cập từ bên trong các phương thức, constructor hoặc block của lớp cụ thể.
- Biến lớp (Class variables): Biến lớp là biến được khai báo trong một lớp, ở ngoài các phương thức và có từ khóa static.
Một lớp có thể chứa nhiều phương thức để truy cập giá trị qua các loại hành vi khác nhau. Trong ví dụ trên, barking(), hungry() và sleeping() là những phương thức.
Constructor trong Java
Khi nói về lớp trong Java, một chủ đề ngoài lề mà người dùng quan tâm đó là constructor. Mỗi lớp đều có một constructor. Nếu người dùng không viết constructor, trình biên dịch sẽ tự tạo một constructor mặc định cho lớp.
Mỗi khi tạo một đối tượng mới, ít nhất một constructor sẽ được gọi. Nguyên tắc quan trọng là constructor phải trùng tên với lớp. Một lớp có thể có một hoặc nhiều constructor.
Dưới đây là một minh họa về constructor:
Ngoài ra, Java còn hỗ trợ lớp Singleton, nơi bạn có thể tạo chỉ một đối tượng cho một lớp.
Lưu ý rằng có hai loại constructor khác nhau, sẽ được giới thiệu trong các bài viết tiếp theo của Mytour.
Tạo một đối tượng trong Java
Như đã được Mytour đề cập trước đó, một lớp cung cấp các bản thiết kế (blueprint) cho các đối tượng. Nói một cách đơn giản, một đối tượng được hình thành từ một lớp. Trong Java, từ khóa new được sử dụng để tạo các đối tượng mới.
Dưới đây là 3 bước để tạo một đối tượng từ một lớp:
- Khai báo: Một khai báo biến bao gồm tên biến và loại đối tượng.
- Triển khai: Sử dụng từ khóa new để tạo ra đối tượng mới.
- Khởi tạo: Sau từ khóa new là việc gọi một constructor. Hàm này được gọi là khởi tạo một đối tượng mới.
Dưới đây là một ví dụ đơn giản về cách tạo một đối tượng:
Nếu biên dịch và chạy chương trình, kết quả đầu ra sẽ là:
Passed Name là: tommy
Truy cập các biến thực thể và phương thức
Để truy cập các biến thực thể và phương thức, ta sử dụng các đối tượng đã được tạo. Dưới đây là cách truy cập biến thực thể một cách đầy đủ:
Ví dụ
Ví dụ sau giúp bạn hiểu cách truy cập biến thực thể và phương thức của một lớp trong Java:
Nếu bạn biên dịch và thực hiện chương trình, kết quả sẽ xuất hiện như sau:
Tên được chọn là: tommy
Tuổi của Puppy là: 2
Giá trị biến: 2
Quy tắc Khai báo File Nguồn (Source File Declaration Rules)
Cuối bài viết, Mytour sẽ hướng dẫn các quy tắc quan trọng khi khai báo file nguồn. Đây là những quy tắc quan trọng giúp bạn khai báo lớp, lệnh import và package trong file nguồn của mình.
- Mỗi file nguồn chỉ nên chứa một lớp public.
- Các file nguồn có thể chứa nhiều lớp không phải public.
- Tên lớp public cũng có thể là tên file nguồn, kết thúc với .java. Ví dụ, nếu tên lớp public là Employee{} , thì tên file nguồn sẽ là Employee.java.
- Nếu lớp được định nghĩa trong package, lệnh package phải xuất hiện đầu tiên trong file nguồn.
- Nếu có lệnh import, chúng phải đặt giữa lệnh package và khai báo lớp. Trong trường hợp không có lệnh package nào, lệnh import sẽ xuất hiện đầu tiên trong file nguồn.
- Cả lệnh import và package đều áp dụng cho tất cả các lớp có mặt trong file nguồn. Không thể khai báo các lệnh import và/hoặc lệnh package cho các lớp khác nhau trong cùng một file nguồn.
Các lớp có đa dạng mức độ truy cập và nhiều loại khác nhau như lớp trừu tượng (abstract class), lớp final, ....
Ngoài ra, trong Java, còn tồn tại một số lớp đặc biệt như lớp Inner và lớp Anonymous.
Package trong Java
Đơn giản nói, package là cách để phân loại các lớp và interface. Khi phát triển ứng dụng Java, với hàng trăm lớp và interface, việc phân loại chúng trở nên quan trọng.
Import Trong Java
Trong Java, khi cung cấp một tên đầy đủ, bao gồm tên package và tên lớp, trình biên dịch có thể dễ dàng xác định vị trí của lớp hoặc mã nguồn. Lệnh import là cách cung cấp vị trí chính xác cho trình biên dịch tìm kiếm lớp cụ thể.
Ví dụ, lệnh sau yêu cầu trình biên dịch tải tất cả các lớp có sẵn trong thư mục java_installation/java/io:
import java.io.*;
Một Ví Dụ Đơn Giản
Ví dụ để tạo 2 lớp là Employee và EmployeeTest.
Bắt đầu bằng cách mở Notepad trên máy tính và thêm đoạn mã sau đây. Lưu ý rằng lớp Employee được đặt làm lớp public. Sau đó, lưu file với tên Employee.java.
Lớp Employee bao gồm 4 biến thực thể: tên, tuổi, chức danh và mức lương. Lớp này có một constructor được định nghĩa rõ ràng với một tham số.
Ví Dụ:
Để thực hiện lớp Employee, bạn cần một phương thức main và phải tạo ra các đối tượng. Để thực hiện điều này, bạn cần tạo một lớp riêng.
Dưới đây là lớp EmployeeTest, tạo ra 2 đối tượng của lớp Employee và gọi phương thức cho từng đối tượng để gán các giá trị cho mỗi biến.
Lưu đoạn mã dưới đây vào file EmployeeTest.java.
Nhập thư viện java.io.*;
Lớp EmployeeTest {
Phương thức main(String args[]) {
/* Tạo hai đối tượng sử dụng constructor */
Tạo đối tượng Employee với tên 'James Smith';
Tạo đối tượng Employee với tên 'Mary Anne';
// Gọi các phương thức cho mỗi đối tượng được tạo
empOne.ganTuoi(26);
empOne.ganChucDanh('Chuyên viên Cao cấp phần mềm');
empOne.ganLuong(1000);
empOne.inThongTinNhanVien();
empTwo.ganTuoi(21);
empTwo.ganChucDanh('Chuyên viên Phần mềm');
empTwo.ganLuong(500);
empTwo.inThongTinNhanVien();
}
}
Sau khi biên dịch và thực thi cả hai lớp, EmployeeTest sẽ cho kết quả như sau:
Đã đến lúc Mytour kết thúc hành trình giới thiệu về lớp và đối tượng trong Java. Bạn đọc có thể khám phá thêm hướng dẫn cơ bản về ngôn ngữ Java để nắm bắt đầy đủ kiến thức cần thiết về ngôn ngữ này. Chúc các bạn thành công!
