Trang chủ » Bài 9: Class trong Java

Bài 9: Class trong Java

Tác giả:
Đánh giá bài đăng
0
64

Tiếp tục với series, bài này mình sẽ hướng dẫn các bạn khai báo một class trong java. 
Để có thể hiểu được bài này thì các bạn cần phải biết khái niệm về hướng đối tượng trong lập trình (Xem ở đây).

1. Class.

Class (lớp) dùng để mô tả một phần hoặc toàn phần của một đối tượng(nhưng không phải đối tượng). Và để khai báo class trong Java thì chúng ta sử dụng cú pháp sau:

assess_modifier class name {
	// code
}

Trong đó: 

  • assess_modifier là phạm vi truy cập của class. assess_modifier sẽ là 1 trong 4 giá trị sau: public, protected, private, default hoặc bỏ trống (cái này mình sẽ nói chi tiết ở dưới)
  • name là tên của class.

 VD: Khai báo một class Xe

public class Xe {
	// code
}

Chú ý: Nếu class có assess_modifier là public thì bắt buộc tên file phải trùng với tên class. Như trong ví dụ trên thì class Xe phải được khai báo trong file Xe.java

2. Thuộc tính.

Thuộc tính trong class là một biến được khai báo bên trong 1 class, nhưng lại không nằm trong một phương thức nào. 

Để khai báo một thuộc tính trong class các bạn sử dụng cú pháp sau:

assess_modifier option property_type name;

Trong đó

  • assess_modifier là phạm vi truy cập của thuộc tính. assess_modifier sẽ là 1 trong 4 giá trị sau: public, protected, private, default hoặc bỏ trống (cái này mình sẽ nói chi tiết ở dưới).
  • option là loại của thuộc tính. option có thể là final hoặc static hoặc bỏ trống.
  • property_type là kiểu dữ liệu của thuộc tính.
  • name là tên của thuộc tính.

VD: Mình sẽ khai báo thêm một số thuộc tính cho class Xe ở trên.

public class Xe {
 
  private int soBanh;

  private int tocDo;
}

3. Phương thức.

Phương thức trong class là một hàm được để thực thi một hoặc nhiều hành động trong một class.

Để khai báo phương thức trong chúng ta sử dụng cú pháp:

assess_modifier option method_type name(arguments) {
	// code
}

Trong đó

  • assess_modifier là phạm vi truy cập của phương thức. assess_modifier sẽ là 1 trong 4 giá trị sau: public, protected, private, default hoặc bỏ trống (cái này mình sẽ nói chi tiết ở dưới).
  • option là loại của phương thức. option có thể là final hoặc static hoặc bỏ trống.
  • method_type là kiểu dữ liệu trả về của phương thức. Nếu phương thức không trả về dữ liệu thì method_type sẽ là void.
  • name là tên của phương thức.
  • arguments là các tham số truyền vào thương thức.

VD: Mình sẽ khai báo thêm 1 số phương thức cho class Xe ở trên.

public class Xe {
  public int soBanh;

  public int tocDo;

  public int getSoBanh() {
    return soBanh;
  }

  public void setSoBanh(int soBanh) {
    this.soBanh = soBanh;
  }

  public int getTocDo() {
    return tocDo;
  }

  public void setTocDo(int tocDo) {
    this.tocDo = tocDo;
  }
}

Trong ví dụ trên mình đã thêm các phương thức đẻ xét và lấy ra các giá trị của thuộc tính trong class.

4. Phạm vi truy cập (access modifier).

Như các bạn đã thấy thì để khai báo một class, phương thức hay thuộc tính thì đều phải khai báo access_modifier. access_modifier là thuộc tính quyêt định phạm vi truy cập đến class, method, property nó giúp cho chúng ta đảm bảo được tính bảo mật trong hướng đối tượng.

Access modifier trong Java gồm 3 mode sau:

  • public: Khi một class, method hay property được xét public thì chúng ta có thể truy cập được đến nó trong bất kì đâu của chương trình.
  • protected: Khi một method hay property được xét protected thì chúng ta chỉ có thể truy cập được đến nó trong class khái báo và các class con của nó.
  • private: Khi một method hay property được xét private thì chúng ta chỉ có thể truy cập được đến nó trong class khái báo nó.
  • default: Khi một class, method hay property được xét default thì chúng ta có thể truy cập được đến nó trong mọi nơi trong cùng một package.

5. Truy vấn phương thức đối tượng trong class.

Để truy vấn được đến các phương thức, thuộc tính trong class thì các bạn chỉ cần sử dụng cú pháp.

Cú pháp:

// với thuộc tính
this.propertyName

// với phương thức
this.methodName()

// với phương thức có argument
this.methodName(arguments)

VD:

public class Xe {
  private int soBanh;

  private int tocDo;

  public int getSoBanh() {
    return soBanh;
  }

  public void setSoBanh(int soBanh) {
    this.soBanh = soBanh;
  }

  public int getTocDo() {
    return tocDo;
  }

  public void setTocDo(int tocDo) {
    this.tocDo = tocDo;
  }

  public static void abc() {

  }

  public void print() {
    // gán số bánh qua phương thức.
    this.setSoBanh(2);
    // hoặc gán trực tiếp cho thuộc tính.
    this.soBanh = 2;

    // in ra số bánh sử dụng phương thức
    System.out.println(this.getSoBanh());

    // in ra số bánh qua thuộc tính
    System.out.println(this.soBanh);
  }
}

Đối với phương thức hoặc thuộc tính được khai báo là static thì chúng ta sẽ phải truy cập theo cú pháp sau:

className.propertyName

className.methodName()

VD:

public class Demo {
  private static String hello = "Hello world";

  public static String say() {
    return Demo.hello;
  }

  public void print() {
    System.out.println(Demo.say());
  }
}

6. Phương thức khởi tạo.

Phương thức khởi tạo trong class là một phương thức đặc biệt, phương thức này sẽ tự động được thực thi khi chúng ta khởi tạo class. 

Phương thức này bắt buộc phải trùng tên với tên class và không có giá trị trả về.

VD: Khai báo phương thức khởi tạo.

public class Demo {
  
  // phương thức khởi tạo
  public Demo() {
    // code
  }
  
}

Một class sẽ không giới hạn số lượng phương thức khởi tạo. Khi chúng ta khởi tạo class theo cách nào thì Java sẽ tự động thực thi phương thức khởi tạo tương ứng theo cách đó.

VD:

public class Demo {
  private String say;

  public Demo() {
  }

  public Demo(String say) {
    this.say = say;
  }
}

Trong ví dụ trên nếu chúng ta khởi tạo class với không có param nào thì phương thức Demo() sẽ tự động được thực thi. Và nếu chúng ta khởi tạo class với 1 string param thì phương thức Demo(String say) sẽ tự động được thực thi.

7. Lời kết.

Phần này mình chỉ giới thiệu đến mọi người những thứ cơ bản, phổ biến liên quan đến class trong Java thôi. Ở các phần sau mình sẽ giải thích đến những thứ nâng cao hơn.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Facebook Messenger Chat Zalo
Messenger Zalo