Bài 7: Modifiers trong Java? Cách thức truy cập Access Modifiers

Bài 7: Modifiers trong Java? Cách thức truy cập Access Modifiers

“Modifier” là một từ hoặc cụm từ hoặc mệnh đề mô tả, thay đổi hoặc sửa đổi nghĩa của một từ hoặc cụm từ khác theo một cách nào đó. Trong Java, modifier được hiểu là một công cụ sửa đổi truy cập ‘Access modifierS’, có nghĩa là nó được sử dụng để đặt mức truy cập cho các lớp, thuộc tính, phương thức và hàm tạo.

Như đã nói ở trên Access Modifiers trong Java được sử dụng để chỉ định các mức truy cập cho các lớp, các phương thức biến và hàm tạo. Nó giúp cập nhật giá trị của một biến . Chúng còn được gọi là công cụ điều chỉnh “khả năng nhìn thấy”. Nghe có vẻ khó hiểu đúng không? Trong các bài trước về

public class <tên_class>

Bạn có thể bắt gặp các từ khóa công khai Public , riêng tư Private và được bảo vệ trong khi thực hành bất kỳ chương trình Java nào, chúng được gọi là Công cụ sửa đổi truy cập. Như tên cho thấy, Bộ sửa đổi truy cập trong Java giúp hạn chế phạm vi của một lớp, hàm tạo, biến, phương thức hoặc thành viên dữ liệu. 

Bộ sửa đổi truy cập có thể được chỉ định riêng cho một lớp, hàm tạo , trường và phương thức. Chúng cũng được gọi là  các bộ xác định truy cập trong Java , nhưng tên chính xác là các bộ sửa đổi truy cập Java .

Vì vậy, chúng ta hãy đi sâu vào các loại Công cụ sửa đổi truy cập khác nhau trong Java.

Bạn hãy nhớ 4 kiểu sửa đổi truy cập trong Java sau đây:

1. Default Access Modifier – Công cụ sửa đổi truy cập mặc định
2. Private Access Modifier – Công cụ sửa đổi truy cập riêng tư
4. Public Access Modifier – Công cụ sửa đổi truy cập công cộng
5. Protected Access Modifier – Bảo vệ truy cập sửa đổi

Hãy để chúng tôi tìm hiểu về từng người trong số họ một cách chi tiết.

Khi không có công cụ sửa đổi truy cập nào được chỉ định cho một lớp, phương thức hoặc thành viên dữ liệu cụ thể, nó được cho là có công cụ sửa đổi truy cập mặc định  . 

Các thành viên, lớp hoặc phương thức không được khai báo sử dụng bất kỳ công cụ sửa đổi  nào, sẽ có công cụ sửa đổi mặc định chỉ có thể truy cập được trong một gói

package p1;//Class Course có Default access modifier class Course{    void display()        {            System.out.println("Hello World!");        }}

Tiếp theo, chúng ta hãy chuyển sang loại tiếp theo, sửa đổi truy cập riêng tư.

  • – Các phương thức hoặc thành viên dữ liệu được khai báo là riêng tư chỉ có thể truy cập được trong lớp mà chúng được khai báo.
  • – Các lớp hoặc giao diện cấp cao nhất không thể được khai báo là riêng tư vì thực tế là:
  •    + Dấu hiệu riêng tư “chỉ nhìn thấy được ở bên trong lớp kèm theo” .
  •    + Dấu hiệu bảo vệ “chỉ thấy rõ ràng ở bên trong lớp kèm theo và bất kỳ lớp con nào” .
  • – Nếu một lớp có được xây dựng riêng tư (nghĩa là thiết lập Private Access Modifier cho class đó) thì bạn không thể tạo đối tượng của lớp đó từ bên ngoài lớp.
  • – Các lớp không thể được đánh dấu bằng công cụ sửa đổi truy cập riêng tư.
  • – Việc biểu thị một lớp với công cụ sửa đổi truy cập riêng tư sẽ ngụ ý rằng không có lớp nào khác có thể nhận được nó. Điều này thường ngụ ý rằng bạn không thể sử dụng lớp bằng bất kỳ sự tưởng tượng nào. Theo cách này, công cụ sửa đổi truy cập riêng không đưa vào các lớp tài khoản.

Lưu ý : Lớp hoặc Giao diện không thể được khai báo là riêng tư. 

Cú pháp:

public class Clock {    private long time = 0;}

Hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập riêng tư này.

package p;    class A {        private void display(){            System.out.println("Aptech Buôn Ma ThuộtThuột");        }    }    class B {        public static void main(String args[]){            A obj = new A();            //Thử truy cập một lớp được  thiết lập Private Access Modifier từ một lớp khác            obj.display();        }}

Đầu ra của chương trình này là:

error: display() has private access in Aobj.display();

Hy vọng các bạn rõ ràng với sửa đổi truy cập riêng tư. Tiếp theo, hãy chuyển sang loại tiếp theo, công cụ sửa đổi truy cập công cộng Public Access Modifier.

Công cụ sửa đổi truy cập công cộng Public Access Modifier

  • – Công cụ sửa đổi truy cập công cộng được chỉ định bằng cách sử dụng từ khóa  công khai “public”. 
  • – Công cụ sửa đổi truy cập công cộng có phạm vi rộng nhất trong số tất cả các công cụ sửa đổi truy cập khác.
  • – Các lớp , phương thức hoặc thành viên dữ liệu được khai báo là công khai có thể truy cập ở mọi nơi trong chương trình. Không có giới hạn về phạm vi của các thành viên dữ liệu công cộng.

Cú pháp:

package aptechbmt.co;public class PublicClassDemo {// Ở đây tôi không đề cập đến bất kỳ công cụ sửa đổi nào để nó hoạt động như một công cụ sửa đổi mặc định    public int myMethod(int x){        return x;    }}

Bây giờ, hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập công cộng này.

Thí dụ: Tôi có 2 file .java với 2 nội dung bên dưới, sau khi javac tôi chạy file có nội dung thứ 2

package p1;public class A{    public void display()    {        System.out.println("Học lập trình tại Aptech Buôn Ma Thuột!");    }}
package p2;import p1.*;class B{    public static void main(String args[])    {        A obj = new A;        obj.display();    }}

Đầu ra: Học lập trình tại Aptech Buôn Ma Thuột!

Bảo vệ truy cập sửa đổi Protected Access Modifier

  • – Công cụ sửa đổi truy cập được bảo vệ được chỉ định bằng cách sử dụng từ khóa  được bảo vệ “Protected”.
  • – Các phương thức hoặc thành viên dữ liệu được khai báo là ‘được bảo vệ’ có thể truy cập được trong cùng một gói hoặc các lớp con trong một gói khác nhau.
  • – Các thành viên được bảo vệ chỉ có thể được truy cập ở lớp con hoặc các lớp dẫn xuất.

Cú pháp:

package packageFourProtected;    public class ProtectedClassFour    {        protected int myMethod(int a){        return a;    }}

Chúng ta hãy xem một ví dụ.

spackage p1;//Class Apublic class A{    protected void display()        {        System.out.println("Học lập trình Java tại Aptech Buôn Ma Thuột");        }}

File 2:

package p2;import p1.*; //import tất cả class trong package p1//Class B là subclass củacủa Aclass B extends A |{    public static void main(String args[])    {        B obj = new B();        obj.display();    }}

Kết quả: Học lập trình Java tại Aptech Buôn Ma Thuột

Đây là mọi thứ bạn cần biết về các phương thức khác nhau của các công cụ sửa đổi truy cập trong Java. Hãy chuyển sang chủ đề tiếp theo.

Sửa đổi truy cập với phương thức ghi đè

Nếu trong trường hợp, bạn đang ghi đè bất kỳ phương thức nào, thì phương thức được ghi đè được khai báo trong lớp con không được hạn chế.

Hãy xem ví dụ dưới đây.

class A{    protected void msg()    {        System.out.println("Hello java");    }}public class Simple extends A {     void msg()    {        System.out.println("Hello java");    }    //C.T.Error    public static void main(String args[])    {        Simple obj=new Simple();        obj.msg();    }}

Kiểm soát truy cập và kế thừa

Công cụ sửa đổi mặc định hạn chế hơn bảo vệ. Đây là lý do tại sao có một lỗi thời gian biên dịch.

  • – Nếu trong trường hợp, bạn tạo một lớp con của một số lớp, thì các phương thức trong lớp con đó có thể có các bộ sửa đổi truy cập ít truy cập được gán cho chúng hơn lớp supperclass.
  • – Chẳng hạn, nếu một phương thức trong lớp cha là công khai thì nó cũng phải được công khai trong lớp con. Nếu một phương thức trong siêu lớp được bảo vệ, thì nó phải được bảo vệ hoặc công khai trong lớp con được chỉ định.
  • – Các phương thức được khai báo là riêng tư không được kế thừa.

Tự học Git 
Tự học lập trình có khó không?

Lớp hoặc Giao diện không thể được khai báo là riêng tư.Cú pháp:Hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập riêng tư này.Đầu ra của chương trình này là:Cú pháp:Bây giờ, hãy xem một ví dụ để có ý tưởng rõ ràng về công cụ sửa đổi truy cập công cộng này.Thí dụ: Tôi có 2 file .java với 2 nội dung bên dưới, sau khi javac tôi chạy file có nội dung thứ 2Cú pháp:Chúng ta hãy xem một ví dụ.File 2:Kết quả: Học lập trình Java tại Aptech Buôn Ma ThuộtĐây là mọi thứ bạn cần biết về các phương thức khác nhau của các công cụ sửa đổi truy cập trong Java. Hãy chuyển sang chủ đề tiếp theo.Nếu trong trường hợp, bạn đang ghi đè bất kỳ phương thức nào, thì phương thức được ghi đè được khai báo trong lớp con không được hạn chế.Hãy xem ví dụ dưới đây.

Tác giả bài viết: Aptech Buôn Ma Thuột

Tags

tự học java

Như đã nói ở trên Access Modifiers trong Java được sử dụng để chỉ định các mức truy cập cho các lớp, các phương thức biến và hàm tạo. Nó giúp cập nhật giá trị của một biến . Chúng còn được gọi là công cụ điều chỉnh “khả năng nhìn thấy”. Nghe có vẻ khó hiểu đúng không? Trong các bài trước về Java/J2EE và SOA bạn đã khá quen thuộc với từ khóa “public” xuất hiện trong hầu hết các ví dụ:Khi không có công cụ sửa đổi truy cập nào được chỉ định cho một lớp, phương thức hoặc thành viên dữ liệu cụ thể, nó được cho là có công cụ sửa đổi truy cập mặc định .Các thành viên, lớp hoặc phương thức không được khai báo sử dụng bất kỳ công cụ sửa đổi nào, sẽ có công cụ sửa đổi mặc định chỉ có thể truy cập được trong một gói package tương tự. Điều đó có nghĩa là bạn không khai báo rõ ràng một công cụ sửa đổi truy cập cho một lớp, trường, phương thức, v.v.