Tìm hiểu về Private, Public, Protected và Default trong Java

994
30-08-2021
Tìm hiểu về Private, Public, Protected và Default trong Java

Có rất nhiều bạn mới học lập trình bằng ngôn ngữ lập trình Java và băn khoăn khi bắt gặp cụm từ Private, Public, Protected và Default trong Java. Chúng được dùng để chỉ định các mức truy cập cho các lớp, các hàm tạo và các method hay còn được hiểu là công cụ sửa đổi truy cập. Để có thể hiểu rõ hơn về những công cụ này, hãy cùng BizFly Cloud phân tích trong bài viết này nhé.

Private, Public, Protected và Default trong Java là gì?

Private, public, protected và default trong Java được gọi chung là Access Modifier có thể được hiểu là công cụ sửa đổi truy cập. Vậy Access Modifier là gì?

“Modifier” là 1 từ hoặc cụm từ mô tả có thể thay đổi hoặc sửa đổi nghĩa của 1 từ hoặc cụm từ khác bằng nhiều cách khác nhau. Trong Java, Modifier dùng để đặt mức truy cập cho các class, field, constructor. Access Modifier giúp cập nhật giá trị của 1 biến. Lấy ví dụ cho dễ hiểu như lệnh public dưới đây.

public class <tên_class>

Thì từ khóa “public” là 1 kiểu sửa đổi truy cập trong Java.

“Access modifier” được dùng trước các khai báo của 1 class, variable hay method thể hiện khả năng truy cập của class, variable hay method đó. Với class thì ta chỉ có 2 loại Access modifier là public và default nhưng với variable và method thì ta có 4 access modifier là public, protected, default, private. Trong đó giá trị của các biến được hiểu như sau:

Private: Chỉ được truy cập trong nội bộ lớp

Public: Có thành phần công khai và có thể truy cập tự do từ bên ngoài

Protected: Có thành phần được bảo vệ, việc truy cập từ bên ngoài bị hạn chế

Default: Chỉ được truy cập trong nội bộ package

Tìm hiểu về Private, Public, Protected và Default trong Java - Ảnh 1.

Trong phần tiếp theo, chúng ta cùng tìm hiểu chi tiết về các loại Private, Public, Protected và Default trong Java nhé.

Các loại Access Modifier

Như đã đề cập ở trên, Private, Public, Protected và Default trong Java đều có thể được gọi chung là Access Modifier. Vì thế, khi đi vào chi tiết phân loại chúng ta sẽ tìm hiểu lần lượt về Private Access Modifier,  Public Access Modifier, Protected Access Modifier, Default Access Modifier nhé.

1. Private Access Modifier

Trong 4 loại Private, Public, Protected và Default trong Java thì Private Access Modifier là công cụ có phạm vi truy cập mang tính hạn chế nhất. Vì thế các method, variable và constructor nếu được khai báo private thì chỉ có thể được truy cập trong chính lớp khai báo đó.

Vì đặc điểm trên nên lớp và interface không thể là private đồng thời biến được khai báo private có thể được truy cập bên ngoài chỉ khi có tạo method public getter cho biến đó tại lớp đó.

Trong Java, khi sử dụng Private Access Modifier là để 1 đối tượng bao đóng chính nó đồng thời ẩn dữ liệu với bên ngoài giúp tạo tính an toàn dữ liệu với bên ngoài.

2. Public Access Modifier

Ngược lại với Private Access Modifier thì Public Access Modifier trong Private, Public, Protected và Default trong Java có thể truy cập được ở bất cứ đâu. Trong tất cả các Modifier thì nó có phạm vi rộng nhất. 

Khi các class, method, constructor, interface, ...mà được khai báo public thì sẽ được truy cập từ bất cứ class nào khác. Điều này đồng nghĩa với việc các trường, method và khối được khai báo bên trong 1 lớp public có thể được truy cập ở bất cứ lớp nào khác. Tuy nhiên, nếu như class public mà người dùng đang truy cập nằm trong 1 package khác thì bản thân lớp này vẫn cần được import trước khi có thể truy cập.

3. Protected Access Modifier

Trong 4 loại Private, Public, Protected và Default trong Java thì Protected Access Modifier quy định việc có thể truy cập bên trong package và bên ngoài package chỉ khi thông qua tính kế thừa. Lớp và interface không thể áp dụng được Protected Access Modifier. Các method và field thì có thể khai báo protected ngoại trừ việc class và field đó nằm trong 1 interface thì sẽ không khai báo là protected được.

4. Default Access Modifier

Nếu như chúng ta không khai báo rõ ràng 1 Access Modifier (Private, Public, Protected và Default trong Java) cho một lớp, trường (field), method, ...thì theo mặc định nó được xem là default. Và khi Access Modifier là Default thì các lớp, trường (field), method,... chỉ có thể truy cập được từ bên trong package.

Giả sử chúng ta có 2 package và các class của 2 gói này đều là default Access Modifier. Khi cố gắng truy cập 1 class của package này từ package kia thì hệ thống sẽ báo lỗi “Compile time error” nghĩa là hệ thống sẽ báo lỗi không truy cập được.

Access Modifier và tính kế thừa trong Java

Khi khai báo các method là public trong 1 class cha thì các method trong tất cả các class con cũng sẽ là public.

Khi khai báo các method là protected trong 1 class cha thì các method trong các class con phải là protected hoặc là public. Chúng không thể là private.

Nếu không sử dụng modifier nào trong các method được khai báo trong 1 class cha thì method trong các class con có thể được khai báo là private.

Không có quy tắc nào cho các method được khai báo là private vì chúng không có tính kể thừa.

Đến đây có lẽ bạn đã hiểu được Private, Public, Protected và Default trong Java là gì và chi tiết các loại Access Modifier được quy định trong Java. Hy vọng bài viết ngắn này có thể cung cấp cho bạn những kiến thức cần thiết cơ bản trong công cuộc chinh phục ngôn ngữ lập trình Java của mình nhé. Chúc bạn thành công.

SHARE
Hỗ trợ kỹ thuật
Kinh doanh, CSKH