Hướng dẫn tự học Java/J2EE và SOA

Modifiers trong Java là gì 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ề 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ụ:
public class <tên_class>
Thì từ khóa "public" nó là 1 kiểu sửa đổi truy câp 'Access modifier' trong Java. Trong bài này, tôi sẽ giúp bạn hiểu tầm quan trọng của Access Modifiers trong Java Từ đây trở đi, tôi sẽ gọi nó là công cụ sửa đổi truy cập cho dễ ^^!

Nội dung bài này như sau:

Công cụ sửa đổi truy cập là gì?
Các loại sửa đổi truy cập
      Công cụ sửa đổi truy cập mặc định
      Công cụ sửa đổi truy cập riêng 
      Công cụ sửa đổi truy cập công cộng
      Bảo vệ truy cập sửa đổi
Sửa đổi truy cập với phương thức ghi đè
Kiểm soát truy cập và kế thừa

Hãy bắt đầu với chủ đề đầu tiên.

Công cụ sửa đổi truy cập Access Modifiers trong Java là gì?

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.

Các loại sửa đổi truy cập Access Modifiers 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.

Công cụ sửa đổi truy cập mặc định Default Access Modifier

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.
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ông cụ sửa đổi truy cập riêng tư Private Access Modifier

  • - 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();    }}
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.

Kiểm soát truy cập và kế thừa
  • - 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?

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

Ý kiến bạn đọc

Tham gia thảo luận

Mã an toàn Mã bảo mật   

Những tin cũ hơn

Bài 6: Packages trong Java:Cách tạo và sử dụng các packages trong Java
Bài 5:Bytecode trong Java là gì? Nó hoạt động như thế nào?
Bài 4:Tìm hiểu cách sử dụng đối số của Java bằng các ví dụ cụ thể
Bài 3:Tự học Java: Viết chương trình đầu tiên "Hello World" bằng Java
Bài 2: Hướng dẫn cài đặt java và thiết lập đường dẫn cho Java.
Bài 1: Java là gì? Hướng dẫn cho người mới bắt đầu về Java