Tìm hiểu về Class trong java

Tìm hiểu về class trong java

Ở bài trước chúng ta đã tìm hiểu tổng quan về hướng đối tượng OPP trong Java và 4 tính chất trong hướng đối tượng. Tại bài học này chúng ta sẽ tìm hiểu về khái niệm đầu tiên trong OOP Java là class (lớp) và cách sử dụng class trong Java.

Class thể hiện trừu tượng hóa từ một thực thể và được xây dựng như một khối hay một đơn vị trong OOP. Một class bao đóng các trạng thái (data) và các phương thức (method) của một thực thể.

Ví dụ trong một class people sẽ có các trạng thái là name (tên), age (tuổi), job (công việc) và phương thức là speak (nói), run (chạy)… class people sẽ đóng gói tất cả các trạng thái và phương thức của nó.

Ví dụ: Đầu tiên để tạo một class mới, trong Project mới. Tại mục src/Package ta nhấn chuột phải chọn new/class. Điền tên class và nhấn finish.

 

1

 

Trong class people ta khởi tạo các thuộc tính như age, name và phương thức speak dưới dạng như sau:

Ở ví dụ trên ta thấy trong class People sẽ có các thuộc tính là age và name, và phương thức của nó là speak. Phương thức này sẽ thực hiện hành động nói của People. Để sử dụng phương thức của class này ta tạo một class main trong java và khởi tạo class People sau đó gọi phương thức speak.

Class Main trong java trong bài Hello world mình đã giải thích là điểm xuất phát của một chương trình Java. Mọi quá trình thực thi sẽ bắt đầu từ hàm main.

Trong hàm main ta khởi tạo lại class People và gọi phương thức speak:

Kết quả in ra là:

2

 

Lưu ý là phương thức speak ở class People được truyền vào 2 tham số là name và age. Thì nếu gọi ở hàm main thì ta cũng phải truyền vào 2 tham số này để đưa ra kết quả màn hình

People class:

3

 

Main class:

4

 

Đây là một ví dụ cơ bản về class trong java để chúng ta hiểu về class là gì, thành phần và chức năng của nó. Tiếp theo chúng ta sẽ tìm hiểu về các cách sử dụng class và một vài lưu ý khi sử dụng class trong java. Class trong java được chia ra 2 cách sử dụng là multi class và inner class.

1. Multil class

Multil class tức là cách sử dụng nhiều file class khác nhau trong một file source code. Chúng ta vẫn hay nhầm lẫn giữa hai khái niệm class và đối tượng, ở đây chúng ta cần phân biệt class là một khai báo chung cho một lớp thực thể, và khi chúng ta viết code sẽ tạo ra các đối tượng.

Ở đây ta tạo một class là Multil_class và tạo một hàm main, sau đó tạo ra 2 class nữa trong cùng một file Multil_class.java

Chúng ta lưu ý là trong một file Java thì chỉ có một class được phép để dưới dạng public và class đó phải trùng với tên của file java. Ví dụ ta tạo file Multil_class.java thì chỉ có một class Multil_Class ta để dưới dạng public. Nếu class classOne và classTwo để đưới dạng public thì sẽ sinh ra lỗi và chương trình yêu cầu chúng ta tạo classOne trong một file Java cùng tên.

Quay trở lại classOne ta tạo một thuộc tính là name và tạo phương thức getName và setName để lấy ra giá trị và gán giá trị truyền vào cho name:

Phương thức setName nghĩa là truyền vào một giá trị String name, và gán thuộc tính name ở trên bằng giá trị name vừa truyền vào.

Phương thức getName tức là trả ra giá trị name đó.

Ở trong hàm main để sử dụng nó thì chúng ta sẽ khởi tạo class classOne bằng câu lệnh mặc định là ClassOne a = new ClassOne();

Và sử dụng phương thức setName để truyền giá trị vào trong name tại ClassOne bằng câu lệnh a.setName(“Devpro”)    với a là ClassOne vừa được khởi tạo và Devpro là giá trị truyền vào cho thuộc tính name tại ClassOne.

Để lấy ra giá trị của thuộc tính name trong ClassOne và in ra màn hình tại hàm Main ta dùng lệnh a.getName().

Kết quả in ra màn hình là:

5

 

Tiếp theo một lưu ý nữa là khi ta khởi tạo ClassOne theo cách này

Mặc dù a và b là cùng một class nhưng nó là hai đối tượng khác nhau nên nó sẽ cho ra hai thuộc tính có giá trị khác nhau nhưng có cùng phương thức.Ví dụ ta dùng phương thức setName và setName cho hai đối tượng này nó sẽ hoạt động giống nhau nhưng giá trị truyền vào sẽ khác nhau và độc lập.

Ví dụ:

Kết quả đưa ra màn hình là:

6

 

Tương tự như thế với ClassTwo chúng ta có thể dùng tương tự như ClassOne, có thể gán thuộc tính và phương thức và gọi ra như bình thường và có thể khởi tạo bao nhiêu lần tùy thích. Mỗi lần khởi tạo và gọi phương thức thì chương trình sẽ tính thành một đối tượng khác có cùng phương thức nhưng khác giá trị thuộc tính như mình đã ví dụ ở trên.

Có một lưu ý nữa là nếu chúng ta sử dụng class của một file source code khác thì chúng ta sẽ cần import class đó. Về import chúng ta sẽ tìm hiểu ở bài sau.

Và đây là cách sử dụng một hoặc nhiều class trong một file source code. Tiếp theo chúng ta sẽ tìm hiểu cách sử dụng class khác là Inner class.

2. Inner Class.

Ở bài Multil class trên thì ta thấy ClassOne và ClassTwo được sử dụng ngang hàng với nhau. Còn Inner Class tức là sử dụng class trong một class khác.

Quay lại ví dụ ở trên. Trong phần ClassOne ta tạo một class khác là class ShowAddress.

Ta thấy class ShowAddress là một class con của class ClassOne. Tại ShowAddress ta cũng sẽ tạo một thuộc tính address và phương thức getAddress – setAddress như bình thường. Tức là class con này có thể làm được mọi chức năng như những class bình thường khác.

Để sử dụng các thuộc tính cúa ShowAddress thì tại class ClassOne ta khởi tạo một phương thức khác là Show và truyền vào một giá trị String. Trong phương thức Show ta khởi tạo class ShowAddress. Sau đó gọi phương thức setAddress và truyền vào giá trị String của phương thức Show. Và lấy ra giá trị của thuộc tính bằng getAddress. Lưu ý là ở hàm main ta sẽ bỏ hết code ở ví dụ trước để dễ hình dung.

Kết quả in ra màn hình là:

7

 

Lật ngược lại vấn đề ta có như sau. Khi khởi tạo ClassOne tại main. Và gọi phương thức show và truyền vào String là “Hà Nội” thì phương thức Show ở ClassOne sẽ được chạy và nhận String “Hà Nội” Sau đó trong phương thức Show sẽ khởi tạo class ShowAddress và gọi ra setAddress và truyền vào String “Hà Nội” và in ra màn hình dòng chữ “Địa chỉ là: + getAddress”

Toàn bộ code như sau:

Ở đây ta thấy ClassTwo đang ngang hàng với ClassOne. Vậy để ClassTwo sử dụng class ShowAddress là class con của ClassOne thì như nào. Nếu ta khởi tạo class ShowAddress bằng cách ShowAddress a = new ShowAddress(); thì sẽ sinh ra lỗi.

Vậy ở đây ta có hai lựa chọn là import class ShowAddress. Hoặc để đơn giản hơn ta sẽ khởi tạo bằng cách:

Ở đây ta có ClassOne.ShowAddress tức là báo ShowAddress là class bên trong ClassOne và New ClassOne().New ShowAddress() là khai báo ClassOne trước sau đó đến ShowAddress().  Như vậy biến a sẽ gọi được các phương thức của ShowAddress như bình thường. Ngoài ra Inner class còn có thể được tạo trong một phương thức.

Vậy là trong bài này chúng ta đã đi sâu tìm hiểu ký về các cách sử dụng class trong Java. Chúng ta cần luyện tập các cách sử dụng này để sử dụng class linh hoạt sẽ giúp ích rất nhiều trong quá trình code Java. Kiến thức này là một phần cơ bản trong hướng đối tượng Java, ở bài sau chúng ta sẽ tìm hiểu về thừa kế trong Java.

Nếu các bạn muốn biết thêm các kỹ thuật lập trình khác, các bạn có thể tham khảo thêm các khóa học tại đây.

Chúc các bạn học tốt.

 

Add a Comment

Your email address will not be published. Required fields are marked *