Cấp độ truy cập trong Java

0 phút đọc

Có hai loại cấp độ truy cập (Access Modifier) trong Java, đó là: Access ModifierNon-access Modifier.

Trong đó thì access modifier xác định phạm vi có thể truy cập của biến, phương thức, constructor hoặc lớp để có thể hạn chế sự truy cập đến các thành viên của lớp, từ một đối tượng khác và có 4 phạm vi truy cập như sau:

  • private
  • default
  • protected
  • public

Ngoài ra, còn có nhiều Non-access Modifier như static, abstract, synchronized, native, volatile, transient,...

image

Tổng quan về cấp độ truy cập trong java

Bảng dưới đây mô tả khả năng truy cập của các Access Modifier trong java:

Từ khoá Truy cập trong chính lớp đó Truy cập trong lớp con cùng gói Truy cập trong lớp con khác gói Truy cập trong lớp khác cùng gói Truy cập trong lớp khác khác gói
private X - - - -
protected X X X X -
public X X X X X
default X X - X -

Trong bảng trên thì X thể hiện cho sự truy cập hợp lệ còn – thể hiện không thể truy cập vào thành phần này.

Phạm vi truy cập private

Các thành phần private chỉ có thể sử dụng bên trong lớp, ta không thể truy cập các thành phần private từ bên ngoài lớp này.

class Alpha {
  private int bienPrivate;
  private void privateMethod() {
    System.out.println("Đây là phương thức private");
  }
}


class Beta {
  void accessMethod() {
    Alpha a = new Alpha();
    a.iamprivate = 10;// không hợp lệ
    a.privateMethod();// không hợp lệ
  }
}

Chú ý

  • Một lớp không thể là private hoặc protected, ngoại trừ lớp lồng nhau.
  • Nếu bạn tạo bất kỳ constructor là private trong lớp, bạn sẽ không thể tạo instance của class bên ngoài nó.

Phạm vi truy cập default

Nếu bạn không khai báo modifier nào, thì nó chính là trường hợp mặc định. Default Access Modifier là chỉ được phép truy cập trong cùng package.

// Lưu file với tên Alpha.java
package thaycacac.package1;

class Alpha {
  void defaultMethod() {
    System.out.println("Đây là phương thức default");
  }
}
// Lưu file với tên Beta.java
package thaycacac.package12;

class Beta {
    public static void main(String args[]) {
        Alphaobj = new Alpha();
        obj.defaultMethod(); // Không hợp lệ
    }
}

Trong ví dụ trên, phạm vi truy cập của lớp Alpha và phương thức của defaultMethod() của nó là mặc định nên chúng không thể được truy cập từ bên ngoài package.

Phạm vi truy cập protected

Protected access modifier được truy cập bên trong package và bên ngoài package nhưng phải kế thừa.

// Lưu file với tên Alpha.java
package thaycacac.package1;

class Alpha {
  protected void protectedMethod() {
    System.out.println("Đây là phương thức protected");
  }
}
// Lưu file với tên Beta.java
package thaycacac.package12;

class Beta extends Alpha {
    public static void main(String args[]) {
        Alpha obj = new Alpha();
        obj.protectedMethod(); // Không hợp lệ
    }
}

Phạm vi truy cập public

Các thành viên public có thể truy cập từ bất cứ đâu. Để

public class Alpha {
  public int bienPublic;
  public void publicMethod() {
    System.out.println("Đây là phương thức public");
  }
}

```java
class Beta  {
  void accessMethod() {
    Alpha a = new Alpha();
    a.bienPublic = 10; // hợp lệ
    a.publicMethod(); // hợp lệ
  }
}

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Avatar TechMely Team
Được viết bởi

TechMely Team

Bạn sẽ tìm thấy niềm vui khi giúp đỡ người khác bằng tất cả tấm lòng