Java – Access Modifiers

Java access modifier được sử dụng để cung cấp kiểm soát các truy cập trong Java. Java cung cấp kiểm soát các truy cập thông qua 3 từ khoá: private, publicprotected. Chúng ta thường không bị bắt buộc sử dụng những access modifier, vì vậy chúng ta có cái khác tên là default access, package-private hoặc no modifier.

Chúng ta có thể sử dụng Java access modifier với class cũng như các biến, các phương thức.

Chúng ta được cho phép chỉ sử dụng public hoặc default access trong class.

  1. Nếu class là public thì chúng ta có thể truy cập nó ở bất kỳ đâu, ví dụ trong bất kỳ class khác nào nằm trong bất kỳ package khác nào
  2. Chúng ta chỉ nên có một public class trong file source code và tên của file nên trùng với tên của class
  3. Nếu class là default access thì nó chỉ có thể được truy cập bởi class khác trong cùng package

Các kiểu access modifier

Default

Kiểu truy cập Default trong Java được sử dụng mặc định khi chúng ta không chỉ định kiểu access modifier cho class hoặc hàm, với modifier này chúng ta chỉ có thể truy cập trong cùng package.

// ví dụ về default access modifier
package p1;
//Class Example có default access modifier
class Example
{
  void display()
  {
    System.out.println("Hello World!");
  }
}
// sử dụng class khác truy cập vào class trên mà khác package
package p2;
import p1.*;
// class này là default access modifier
class ExampleNew
{
    public static void main(String args[])
    {
      //truy cập class Example từ package p1
      Example obj = new Example();
      obj.display();
    }
}

Kết quả

Compile time error

Private

Kiểu truy cập private trong Java được sử dụng để định nghĩa truy cập đến kiểu dữ liệu hoặc phương thức, nhưng nó chỉ có thể truy cập trong cùng class. Ví dụ bất kỳ class nào khác nằm trong cùng package cũng không thể truy cập đến nó. Class không thể được định nghĩa là private.

package p1;
class A
{
    private void display()
    {
       System.out.println("Hello world");
    }
}
package p2;
import p1.*;

class ExampleNew
{
   public static void main(String args[])
   {
     //accessing class Example from package p1
     Example obj = new Example();
     obj.display();
   }
}

Class ExampleNew thử gọi phương thức private display() trong class A. Truy cập này là không được phép nên chúng ta sẽ nhận được thông báo lỗi

error: display() has private access in A
obj.display();

Protected

Kiểu truy cập Protected được sử dụng để định nghĩa truy cập đến các kiểu dữ liệu hoặc phương thức trong cùng một package hoặc subclass không cùng package

package p1;
//Class A
public class A
{
    protected void display()
    {
       System.out.println("Hello world");
    }
}
package p2;
import p1.*;
//Class B là subclass của A
class B extends A
  {
    public static void main(String args[])
     {
        B obj = new B();
        obj.display();
     }
  }

Class A và B nằm trên 2 package khác nhau nhưng class B là subclass của class A, nên nó có thể gọi hàm protected display() của class A.

Kết quả

Hello world

Public

Kiểu truy cập public trong Java là không có giới hạn. Các kiểu dữ liệu hoặc các phương thức có thể được truy cập từ bất kỳ đâu trong chương trình. Nó có phạm vi rộng nhất trong tất cả các modifier.

package p1;
public class A
{
   public void display()
   {
     System.out.println("Hello world");
   }
}
package p2;
import p1.*;
class B
{    
  public static void main(String args[])      
  {         
    A obj = new A;         
    obj.display();    
  }
}

Kết quả

Hello world

 

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

Your email address will not be published.