Access Modifier trong Java bao gồm Private, Public, Protected và Default. Nó đóng vai trò quan trọng trong việc giới hạn truy cập dữ liệu. Xác định phạm vi có thể truy cập bao gồm biến, phương thức, constructor hoặc lớp.
Trong một dự án Java có nhiều thành viên tham gia. Có những dữ liệu được dể là public, còn cái khác thì cần phải đặt là protected hay private để bảo vệ. Tránh việc chỉnh sửa gây lỗi trong quá trình làm việc.
Dưới đây chúng ta sẽ đi tìm hiểu về 4 giới hạn truy cập có trong ngôn ngữ lập trình Java.
1. Private trong java là gì?
Trong Java, private
là một từ khóa truy cập (access modifier) được sử dụng để xác định phạm vi truy cập của một thuộc tính (attribute) hoặc phương thức (method).
Khi một thuộc tính hoặc phương thức được khai báo là private
, nó chỉ có thể được truy cập từ bên trong cùng một lớp (class).
Đây là cấp độ truy cập của một công cụ sửa đổi riêng tư chỉ nằm trong lớp (Class). Nó không thể được truy cập từ bên ngoài lớp.
Tạo file Test.java
public class Test { int number; private Test() { number = 50; } public static void main(String[] args) { Test result = new Test(); System.out.println(result.number); } }
Tiếp theo mình sẽ tạo ra một file là TestNew.java
public class TestNew { public static void main(String[] args) { Test result = new Test(); System.out.println(result.number); } }
Khi chạy TestNew.java sẽ xuất hiện một thông báo lỗi.
2. Public trong java là gì?
Trong Java, public
là một từ khóa truy cập (access modifier) được sử dụng để xác định phạm vi truy cập của một thuộc tính (attribute), phương thức (method) hoặc lớp (class).
Khi một thuộc tính, phương thức hoặc lớp được khai báo là public
, nó có thể được truy cập từ bất kỳ đâu trong chương trình Java, bao gồm cả từ các lớp khác và các package khác.
Public trong Java cho phép truy cập mọi nơi. Bên trong, bên ngoài lớp và package.
Cũng với ví dụ trên giờ thay đổi private Test() thành public Test() và sau đó chạy file TestNew.java.
Ví dụ khác:
public class MyClass { public int age; public void displayAge() { System.out.println("Age: " + age); } }
Trong ví dụ này, MyClass
là một lớp được khai báo là public
, vì vậy nó có thể được truy cập từ bất kỳ đâu trong chương trình Java. Lớp này có một thuộc tính age
và một phương thức displayAge()
, cả hai đều được khai báo là public
, nên chúng cũng có thể được truy cập từ bất kỳ đâu trong chương trình Java.
3. Protected trong Java là gì?
Trong Java, protected
là một từ khóa truy cập (access modifier) được sử dụng để xác định phạm vi truy cập của một thuộc tính (attribute) hoặc phương thức (method).
Khi một thuộc tính hoặc phương thức được khai báo với từ khóa protected
, nó có thể được truy cập từ bên trong cùng một package hoặc từ một lớp con (subclass) ở bất kỳ package nào.
Tuy nhiên, nếu thuộc tính hoặc phương thức được khai báo là protected
, các đối tượng khác ngoài package hoặc lớp con sẽ không thể truy cập trực tiếp được. Thay vào đó, các đối tượng này phải sử dụng kế thừa (inheritance) hoặc getter/setter method để truy cập đến thuộc tính hoặc phương thức được khai báo là protected
.
Phạm vi truy cập Protected được truy cập bên trong package và bên ngoài package nhưng phải kế thừa (Extends).
Ví dụ:
Bạn sẽ tạo ra 2 package với tên là package1 và package2.
Trong package1 tạo file Test.java
Trong package2 tạo file TestPackage2.java
Tập tin Test.java
với lệnh
package package1; public class Test { String name = "Quach Quynh"; protected Test() { System.out.println("Xin chao ban: " + name); } }
Và tập tin TestPackage2.java
package package2; import package1.Test; public class TestPackage2 extends Test { public static void main(String[] args) { Test obj = new TestPackage2(); System.out.println(obj); } }
4. Default trong Java
Trong Java, default
(hay còn gọi là package-private
) là một từ khóa truy cập (access modifier) được sử dụng để xác định phạm vi truy cập của một thuộc tính (attribute), phương thức (method) hoặc lớp (class).
Khi một thuộc tính, phương thức hoặc lớp được khai báo với default
modifier, nó chỉ có thể được truy cập từ bên trong cùng một package.
Nếu không xác định bất kỳ từ khóa truy cập nào, Java sẽ tự động đặt một từ khóa truy cập mặc định là default
. Điều này có nghĩa là, nếu một thuộc tính, phương thức hoặc lớp không được khai báo với bất kỳ từ khóa truy cập nào, thì nó sẽ chỉ có thể truy cập được từ bên trong cùng một package.
Default là trường hợp mặc định khi bạn không khai báo 3 modifier ở trên. Quyền truy cập Default chỉ được phép truy cập trong cùng package.
Ví dụ:
Tạo file Test.java
trong package1
package package1; public class Test { protected Test() { System.out.println("Pham vi truy cap default"); } }
Và một file nữa là Test2.java
cũng trong package1
package package1; public class Test2 { public static void main(String[] args) { Test obj = new Test(); System.out.println(obj); } }
Kết thúc bài học về phạm vi truy cập gồm public, private, protected, default có đơn giản không nào. Đây là một phần kiến thức không thể bỏ qua khi tìm hiểu về lập trình hướng đối tượng OOP. Chính vì vậy bạn cần đọc và làm bài tập nhiều hơn.