Access modifier trong Java

Access modifier trong Java xác nhận quyền truy cập trên các biến, các bí quyết của class này từ các class khác trong cùng package hoặc ở hai package khác nhau.

Có bốn loại access modifier trong Java này là: public, protected, default & private. Khái quát mỗi loại access modifier có ý nghĩa như sau:

  • public: toàn bộ các class khác trong hay ngoài package & nội bộ class đều có thể truy cập đến các biến, các bí quyết public của class này.
  • protected: chỉ những class ở cùng package hoặc những class extends từ class này & nội bộ class mới có thể truy cập đến các biến, bí quyết public của class này.
  • default: chỉ những class ở cùng package với class này & nội bộ class thì mới có thể truy cập đến các biến, các bí quyết public của class này.
  • private: chỉ những class nằm bên trong class này mới có quyền truy cập đến các biến, bí quyết public của class này.

Để các bạn có thể am hiểu hơn, tất cả chúng ta hãy đi ngang qua từng access modifier nhé các bạn!

Public access modifier

Đây là access modifier ít hạn chế quyền truy cập nhất, các public class hoặc interface có thể được truy cập từ toàn bộ các package, bao gồm nội bộ class hoặc inteface cho đến các class nằm trong các package khác nhau.

Chẳng hạn, mình có class Student được khái niệm là public class nằm trong package com.huongdanjava & nó có một biến public là name & một bí quyết public là goToSchool() như sau:

Xem Thêm  Đối tượng Python thành chuỗi - truyền sang chuỗi python

1

2

3

4

5

6

7

8

9

package

com

.

huongdanjava

;

 

public

class

Student

{

 

    

public

String

name

=

“Khanh”

;

 

    

public

void

goToSchool

(

)

{

    

}

}

& mình có một class khác tên là Example nằm trong default package, class này có thể truy cập đến các biến, các bí quyết của class Student như sau:

Protected access modifier

Các biến, các bí quyết được khái niệm với protected access modifier chỉ có truy cập từ các class nằm trong cùng package & các class con extends từ class này.

Trở lại chẳng hạn trong phần public access modifier, nếu giờ đây mình sửa lại access modifier của biến name & bí quyết goToSchool thành protected như sau:

1

2

3

4

5

6

7

8

9

package

com

.

huongdanjava

;

 

public

class

Student

{

 

    

protected

String

name

=

“Khanh”

;

 

    

protected

void

goToSchool

(

)

{

    

}

}

Thì hiện thời trong class Example, lỗi compile sẽ hiện ra:

Access modifier trong Java

Bạn chỉ có thể truy cập các biến, bí quyết này trong class Example khi để nó extends từ class Student & không tạo mới đối tượng Student như sau;

Access modifier trong Java

Default access modifier

Các biến, các bí quyết được khái niệm mà không sử dụng một access modifier nào thì nó sẽ có access modifier mặc định. Những biến, bí quyết này chỉ có thể truy cập từ các class nằm trong cùng package.

Kế tiếp chẳng hạn trên, giờ đây mình xóa các access modifier khái niệm cho biến name & bí quyết goToSchool() của class Student như sau:

1

2

3

4

5

6

7

8

9

package

com

.

huongdanjava

;

 

public

class

Student

{

 

    

Xem Thêm  CAST và CHUYỂN ĐỔI (Transact-SQL) - SQL Server - sql truyền chuỗi thành int

String

name

=

“Khanh”

;

 

    

void

goToSchool

(

)

{

    

}

}

Trở lại class Example, các bạn sẽ bị lỗi compile ngay:

Access modifier trong Java

Để khắc phục lỗi này, tất cả chúng ta chỉ có cách di chuyển class Example nằm cùng package với class Student như sau:

Access modifier trong Java

Hiện thời, lỗi compile sẽ auto biệt tăm.

Access modifier trong Java

Private access modifier

Đây là access modifer hạn chế quyền truy cập nhiều nhất, với access modifier này các biến, các bí quyết của các bạn chỉ có thể truy cập ở bên trong class.

Chẳng hạn, giờ đây mình sẽ thêm private vào các biến, bí quyết của class Student,

1

2

3

4

5

6

7

8

9

package

com

.

huongdanjava

;

 

public

class

Student

{

 

    

private

String

name

=

“Khanh”

;

 

    

private

void

goToSchool

(

)

{

    

}

}

ngay hiện thời class Example sẽ bị lỗi compile ngay.

Access modifier trong Java

Nếu mình tạo một class khác bên trong class Student với bài viết gần giống như class Example thì sẽ không bị lỗi compile như trên

Access modifier trong Java

Access modifier với bí quyết ghi đè trong class con

Nếu một class con ghi đè một bí quyết của class cha, thì bí quyết ghi đè này không được giảm quyền truy cập của bí quyết đó, chẳng hạn nếu access modifier của bí quyết ở class cha là default access modifier thì trong class con, tất cả chúng ta không được khái niệm access modifier cho bí quyết ghi đè đó là private.

Chẳng hạn rõ ràng và cụ thể hơn, mình có class Student như sau:

1

2

3

4

5

6

7

8

9

package

com

.

huongdanjava

;

 

Xem Thêm  Kiểm tra xem Chuỗi có chứa Ký tự cụ thể trong JavaScript hay không - js tìm ký tự trong chuỗi

public

class

Student

{

 

    

public

String

name

=

“Khanh”

;

 

    

void

goToSchool

(

)

{

    

}

}

& class Example extends từ class Student. Giờ nếu mình mong muốn ghi đè bí quyết goToSchool() trong class Example thì mình phải khái niệm access modifier của bí quyết ghi đè là protected hoặc public.

Access modifier trong Java

hoặc

Access modifier trong Java

Bạn chẳng thể khái niệm nó là private được.

Access modifier trong Java

5/5 – (1 bầu chọn)

Viết một bình luận