• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
anhcraft

Java Java cơ bản #10: Access modifier

anhcraft

Thành viên BQT
DEVELOPER
THÀNH VIÊN
Tham gia
18/09/2016
Bài viết
3,165
Trong bài này mình sẽ giới thiệu tiếp về đặc tính thứ hai của OOP, đó là encapsulation (tính đóng gói) hay còn gọi là information hiding (che giấu thông tin)

Có 4 loại access modifier:
- Private
- (Mặc định)
- Protected
- Public

private, protected, public đồng thời cũng là các từ khóa trong Java, khi bạn không sử dụng thì access modifier là mặc định
Các từ khóa trên đặt trước tên của Constructor, từ khóa class, kiểu dữ liệu, hoặc đặt trước static (nếu có)
Ví dụ:
tgOzlfx.png


Trong ảnh trên, biến tenTaiLieu được thêm từ khóa private
Hàm #datTen() được thêm từ khóa protected
Ở trên cùng, class TaiLieu được thêm từ khóa public

Khả năng truy cập của các access modifier:
Private
Mặc định
Protected
Public
Chỉ cho phép truy cập trong nội bộ Class​
Cho phép truy cập từ Class cùng Package​
Cho phép truy cập từ Class cùng Package hoặc Class kế thừa​
Cho phép truy cập từ mọi Class​

Chú ý:
Java sẽ truy cập từ ngoài -> trong. Gỉa sử cái Method là public nhưng class là private thì Method đó vẫn không thể truy cập từ bên ngoài được!
Nếu không thể truy cập Constructor thì không thể tạo Object

Ví dụ:
Us97k00.png
XjHgqRy.png


Cái ảnh thứ hai mình đã nói ở trên rồi nhé! (Gỉa sử class TaiLieu được cung cấp sẵn, không thay đổi)
Trong ảnh 1, class HocSinh đã kế thừa class TaiLieu
Mình muốn làm một hàm để cho học sinh này xem tài liệu, nên mình tạo ra #xemTaiLieu()
Bây giờ, mình phải đặt tên cho cái tài liệu đó. Nhưng biến tenTaiLieu đã có access modifier là private nên mình không thể truy cập được!
Thế nên mình dùng hàm kia có access modifier là protected để truy cập (Lý do: cả hai class trên đã cùng một Package)
Nhìn vào mũi tên màu xanh từ ảnh 1 -> 2: Mình gọi #datTenTaiLieu() kế thừa từ TaiLieu, hàm này sẽ thay đổi giúp mình giá trị biến tenTaiLieu mà không cần truy cập biến đó trực tiếp

Đây là một ví dụ thôi nhé =)) Đừng kêu t đặt vấn đề rườm rà
Ví dụ trên còn chuẩn bị cho 1 thứ là getter & setter mà mình sẽ nói sau!
 
Trong bài này mình sẽ giới thiệu tiếp về đặc tính thứ hai của OOP, đó là encapsulation (tính đóng gói) hay còn gọi là information hiding (che giấu thông tin)

Có 4 loại access modifier:
- Private
- (Mặc định)
- Protected
- Public

private, protected, public đồng thời cũng là các từ khóa trong Java, khi bạn không sử dụng thì access modifier là mặc định
Các từ khóa trên đặt trước tên của Constructor, từ khóa class, kiểu dữ liệu, hoặc đặt trước static (nếu có)
Ví dụ:
tgOzlfx.png


Trong ảnh trên, biến tenTaiLieu được thêm từ khóa private
Hàm #datTen() được thêm từ khóa protected
Ở trên cùng, class TaiLieu được thêm từ khóa public

Khả năng truy cập của các access modifier:
Private
Mặc định
Protected
Public
Chỉ cho phép truy cập trong nội bộ Class​
Cho phép truy cập từ Class cùng Package​
Cho phép truy cập từ Class cùng Package hoặc Class kế thừa​
Cho phép truy cập từ mọi Class​

Chú ý:
Java sẽ truy cập từ ngoài -> trong. Gỉa sử cái Method là public nhưng class là private thì Method đó vẫn không thể truy cập từ bên ngoài được!
Nếu không thể truy cập Constructor thì không thể tạo Object

Ví dụ:
Us97k00.png
XjHgqRy.png


Cái ảnh thứ hai mình đã nói ở trên rồi nhé! (Gỉa sử class TaiLieu được cung cấp sẵn, không thay đổi)
Trong ảnh 1, class HocSinh đã kế thừa class TaiLieu
Mình muốn làm một hàm để cho học sinh này xem tài liệu, nên mình tạo ra #xemTaiLieu()
Bây giờ, mình phải đặt tên cho cái tài liệu đó. Nhưng biến tenTaiLieu đã có access modifier là private nên mình không thể truy cập được!
Thế nên mình dùng hàm kia có access modifier là protected để truy cập (Lý do: cả hai class trên đã cùng một Package)
Nhìn vào mũi tên màu xanh từ ảnh 1 -> 2: Mình gọi #datTenTaiLieu() kế thừa từ TaiLieu, hàm này sẽ thay đổi giúp mình giá trị biến tenTaiLieu mà không cần truy cập biến đó trực tiếp

Đây là một ví dụ thôi nhé =)) Đừng kêu t đặt vấn đề rườm rà
Ví dụ trên còn chuẩn bị cho 1 thứ là getter & setter mà mình sẽ nói sau!
Lai hongg hieu gi het huhu :cry2::cry:
 
Similar content Most view Xem thêm
Back
Top Bottom