- Lớp class trong java
- Phương thức (method, hàm) trong java
- Tham số của phương thức java
- Tham số tùy ý
- Giá trị trả về của phương thức
- Khai báo tạo lớp (class)
- Thuộc tính lớp trong java
Các lớp (class) trong Java là các thành phần cốt lõi, cơ bản của kỹ thuật lập trình hướng đối tượng OOP. Phần này tìm hiểu khai báo tạo ra các định nghĩa lớp java, tạo ra các phương thức của lớp, từ class (lớp) sẽ tạo ra các đối tượng.
Lớp (class) trong Java
Lớp (class) là mô tả về các đối tượng sẽ được tạo ra. Cũng có thể nói lớp là một kiểu (kiểu dữ liệu) để tạo ra các đối tượng, lớp quy định đối tượng tạo ra có dữ liệu gì, ứng xử ra sao. Mỗi lớp có tên lớp, trong lớp có các thuộc tính như là dữ liệu của lớp và các ứng xử của lớp đó (các hàm java) gọi là các phương thức.
Ví dụ một lớp mô tả về con người có thể có:
- Các thuộc tính: tên, chiều cao, cân nặng, giới tính, tuổi ...
- Các ứng xử: đi, chạy, nhảy, nói, ngủ ...
Từ lớp con người như vậy tạo ra các đối tượng cụ thể khi chạy chương trình như: Đàn ông, Phụ nữ, Bạn A, Bạn B ...
Các lớp (class) được định nghĩa bằng cách dùng từ khóa class ví dụ:
public class ClassName { //... Định nghĩa các thuộc tính //... Định nghĩa các phương thức }
Có nhiều thành phần để tạo ra lớp, về chi tiết sẽ tìm hiểu dần ở phần dưới và các bài viết khác trong chủ đề lập trình java, để liệt kê ra - khai báo tạo ra định nghĩa về lớp có thể có các thành phần:
- Xác định phạm vi truy cập (modifier) của lớp hoặc để mặc định. Ở trên pham vị lớp là public. Xem phạm vi truy cập tại phạm vi truy cập lớp java
- Từ khóa class luôn phải có (khai báo sau phạm vi truy cập)
- Tiếp theo là tên lớp, tên lớp phải bắt đầu bằng chữ IN
- Nếu lớp khai báo có kế thừa lớp cha thì khai báo thêm về kế thừa với từ khóa extends. Xem Kế thừa trong java
- Nếu lớp khai báo có triển khai từ các giao diện thì khai báo thêm về giao diện với từ khóa implements. Xem Giao diện interface trong java
-
Cuối cùng là thân của lớp, nằm trong cắp dấu ngoặc nhọn
{ } .
Đến đây sẽ tìm hiểu về phương thức trong lớp trước, các vấn đề khác về lớp như tạo đối tượng ... sẽ tiếp ngay sau đó.
Phương thức là gì?
Các phương thức (method) nó định nghĩa ứng xử của lớp. Một phương thức là một tập hợp các khối lệnh (code) để thi hành một chức năng nào đó. Ví dụ như System.out.println() đã biết, là một phương thức. Bạn có thể định nghĩa phương thức riêng của bạn, thi hành với một nhiệm vụ cụ thể nào đó. Phương thức được định nghĩa bên trong thân của lớp.
Hãy xem ví dụ sau:
class MyClass { // Khai báo phương thức static void sayHello() { System.out.println("Hello World!"); } public static void main(String[ ] args) { // Gọi phương thức sayHello(); } } //Xuất ra: "Hello World!"
Trong ví dụ trên, đã định nghĩa một phương thức sayHello(), phương thức đó được hàm main() gọi để in ra lời chào mừng. Như vậy để gọi phương thức để thi hành code chỉ cần viết tên phương thức và truyền các tham số nếu cần thiết. Một phương thức có thể gọi bao nhiêu lần là tùy mục đích.
Phần khai báo phương thức tên bạn thấy ngoài tên phương thức là sayHello
và
code của phương thức trong khối {...}
thì bạn còn thấy:
- Phương thức tĩnh trong java: là phương thức được khái báo có thêm từ khóa static. Nếu là phương thức tĩnh thì có thể gọi nó mà không cần tạo ra đối tượng của lớp chứa phương thức.
- Phạm vi truy cập của phương thức: xác định bằng các từ khóa như public, protected ... Xem thêm phạm vi truy cập (Access modifier) Java
- Kiểu dữ liệu trả về của phương thức: Các phương thức cần chỉ rõ nó trả về dữ liệu kiểu như int, String, double .... Từ khóa void cho biết phương thức này khi kết thúc không trả về dữ liệu gì.
Tham số của phương thức trong java
Bạn có thể tạo phương thức chấp nhận các tham số truyền vào.
Tham số được viết trong dấu cặp ngoặc ()
,
mỗi tham số mô tả bởi kiểu dữ liệu và tên tham số,
nhiều tham số thì cách nhau bởi dấu phảy ,
Ví dụ phương thức sau có tên welcome, có một tham số kiểu String có tên là name
class MyClass { static void welcome(String name) { System.out.println("Xin chào, " + name); } public static void main(String[ ] args) { welcome("Minh"); welcome("An"); welcome("Tý"); } } // Xuất ra: // Xin chào, Minh // Xin chào, An // Xin chào, Tý
Tham số tùy ý của phương thức
Java có cách khai báo tham số cho phương thức mà khi gọi phương thức số lượng giá trị truyền vào
là tùy thích, các giá trị truyền vào cách nhau bởi dấu phảy ,
.
Các giá trị tham số phương thức nhận được lưu trong một mảng.
Khai báo kiểu tham số tùy ý này cho phương thức thì sử dụng ký hiệu ba chấm ...
(Kiểu-dữ-liệu ... tên-biến).
Hãy xem ví dụ sau, phương thức showProductNames() có tham số tùy chọn có tên names như sau:
class MyClass { // Phương thức tham số tùy ý // names là tên tham số, nó chứa mảng các giá trị chuỗi truyền vào static void showProductNames(String ... names) { int sotenSanpham = names.length; System.out.println("Số tên sản phẩm: " + sotenSanpham); // Duyệt qua phần tử mảng các tham số for (String name : names) { System.out.println(name); } } public static void main(String[ ] args) { showProductNames("Iphone 8", "Note 10", "Macbook Pro"); } } // In ra: // Số tên sản phẩm: 3 // Iphone 8 // Note 10 // Macbook Pro
Ví dụ trên, tham số names như là mảng truyền vào phương thức. Số phần tử quyết định khi truyền tham số cho hàm, như trên là 3 phần tử.
Giá trị trả về của phương thức
Một phương thức có thể có giá trị trả về, sử dụng từ khóa return trong thân phương thức để kết thúc và trả về giá trị, hãy xem phương thức sau:
// Phương thức sum trả về kiểu int, là tổng của hai tham số static int sum(int val1, int val2) { // phương thức kết thúc khi gặp return return val1 + val2; }
Chú ý trong định nghĩa phương thức, kiểu trả về phải được định nghĩa trước tên phương thức,
như trên đó là kiểu int
.
Giờ là ví dụ sử dụng phương thức trên
class MyClass { static int sum(int val1, int val2) { return val1 + val2; } public static void main(String[ ] args) { // giá trị trả về của sum lưu vào biến x int x = sum(2, 5); System.out.println(x); } } // Outputs "7"
Bạn thấy, giá trị trả về của phương thức đã được gán vào biến x.
Khi phương thức bạn xây dựng mà không có giá trị trả về thì cần phải khai báo với từ khóa void.
// trả về giá trị kiểu int, số 5 static int returnFive() { return 5; } // phương thức có tham số, nhưng không có giá trị trả về static void sayHelloTo(String name) { System.out.println("Hello " + name); }
Tạo lớp class trong Java
Trong Eclipse
sau khi tạo dự án Java mới. Bạn có thể tạo ra một lớp bằng lệnh
File > New > Class
trong hộp thoại hiện thị nhập tên của class, ví dụ nhập Animal
.
Eclipse sẽ tạo ra file Animal.java, và khai báo sẵn lớp Animal trong file đó giúp bạn
Animal.java
package animals; public class Animal { }
Giờ thêm một phương thức có tên bark() trong lớp
Animal.java
package animals; public class Animal { public void bark() { System.out.println("Gâu Gâu ..."); } }
Như vậy đã có lớp Animal, trong lớp có phương thức bark()
Ta thấy phương thức bark() khai báo không có từ khóa public static như các ví dụ trước đây, điều này có nghĩa để gọi được hàm này cần phải tạo ra đối tượng cụ thể cho lớp Animal.
Ví dụ sử dụng lớp đó trong hàm main của lớp MyClass. Đối tượng mới của lớp tạo ra bằng từ khóa new
// Nạp package import animals.Animal; class MyClass { public static void main(String[] args) { // Tạo đối một đối tượng lớp Animal và lưu vào biến dog Animal dog = new Animal(); dog.bark(); } } // Outputs "Gâu Gâu ..."
Trong ví dụ trên ta đã tạo ra đối tượng Animal lưu trong dog và để truy cập vào các phương thức và thuộc tính dùng dấu châm và tên phương thức, thuộc tính như dog.bark()
Thuộc tính của lớp
Như ta đã biết lớp có thuộc tính và phương thức. Thuộc tính cơ bản là biến bên trong một lớp, nó là thành viên lưu trữ dữ liệu của lớp. Khai báo giống khai báo biến, tức gồm kiểu dữ liệu và tên thuộc tính (thành viên dữ liệu của lớp). Ngoài ra có thể thiết lập phạm vi truy cập thuộc tính (xem thêm phạm vi truy cập thuộc tính và phương thức). Ví dụ tạo ra lớp với phương thức và thuộc tính như sau:
public class Vehicle { int maxSpeed; int wheels; String color; double fuelCapacity; void horn() { System.out.println("Beep!"); } }
maxSpeed, wheels, color, fuelCapacity là các thuộc tính của lớp, còn horn() là phương thức.
Ví dụ sử dụng
class MyClass { public static void main(String[] args) { //Tạo ra v1, v2 đối tượng của lớp Vehicle v1 = new Vehicle(); Vehicle v2 = new Vehicle(); //Gán giá trị cho thuộc tính v1.color = "red"; //Truy cập phương thức v2.horn(); //Đọc thuộc tính của đối tượng String colorv1 = v1.color; } } //Xuất //Beep!
Tham khảo mã nguồn ClassAndMethod (git) hoặc tải về source-methodandclass