Lập trình phía đối tượng người sử dụng là một hình trạng xây dựng cực kỳ hữu ích để tạo nên những đối tượng bao gồm tài liệu và chức năng. Chúng ta thường xuyên phát hiện thuật ngữ OOP cùng các phép tắc của chính nó trong số ngôn ngữ nhỏng C #, JavaScript, Java với nhiều ngữ điệu không giống. Trong bài bác này, chúng ta đang đề cập đến một trong 4 cách thức của nó lúc thực hiện Java: Đóng gói.

Bạn đang xem: Encapsulation là gì


*

Trước khi giải thích Encapsulation là gì , chúng ta hãy coi tư tưởng của chính nó. Bao gói có nghĩa là phủ quanh một cái gì đó vào một viên nang nhằm giữ lại cùng nhau bất cứ đồ vật gì bọn họ đặt bên trong. Viên nang không nhằm bên trong ra ngoài nhằm những thành phần có thể ở lại cùng nhau. Ví dụ, thuốc là một số tất cả hổn hợp được gói gọn phía bên trong một viên dung dịch nhưng chúng ta cũng có thể thực hiện lúc bắt buộc. Với viên dung dịch kia, các nguyên tố của thuốc vẫn hệt như lần đầu tiên được trộn và yếu tố phía bên trong thiết yếu biến hóa so với bên phía ngoài.

Hãy đổi khác một trong những từ bỏ nghỉ ngơi kia với nỗ lực chu đáo tự phạm vi ở trong phòng cải cách và phát triển. Nếu họ đặt “Đối tượng” nuốm vì chưng “thuốc” cùng “Lớp” vắt vì “thuốc” thì những nhân tố của chúng ta đang trở nên “Phương thức”“Biến” phía bên trong lớp đó. Đây là câu chủ yếu đến nguyên lý của chúng tôi:

Một đối tượng người dùng buộc phải đóng gói những cách làm và trở thành của nó bên trong một tấm cùng đề xuất áp dụng chúng Khi quan trọng.

Việc đóng góp gói chỉ nhằm mục đích mục tiêu giữ lại dữ liệu cùng các pmùi hương thức lại cùng nhau nhằm rời tái diễn và tạo thành các kết nối chính xác cùng hợp lý thân các đối tượng . Bên cạnh đó, nó chất nhận được công ty cách tân và phát triển đặt một trong những quy tắc về đối tượng sinh sản với sử dụng. Nhưng làm cho nỗ lực như thế nào chúng ta có thể làm cho điều đó? Có 4 từ khóa mang đến hành vi đơn giản và dễ dàng tuy thế quan trọng này: Công khai , Riêng tư , Mặc định , Được bảo vệ . Chúng tôi Điện thoại tư vấn chúng là “Access Modifier” với ngẫu nhiên knhì báo cấu tạo dữ liệu nào cũng bước đầu cùng với chúng.

1-Công khai

Các “ công cộng từ bỏ khóa” là cực kỳ phổ cập cùng chúng ta cũng có thể nhận thấy nó trong ngẫu nhiên ngôn từ lập trình sẵn. Nlỗi chúng ta cũng có thể tư duy tự ý nghĩa của chính nó, trường đoản cú khóa “ public ” cho phép sử dụng sinh sống bất cứ đâu, ngay cả phía bên ngoài chỗ nó được khai báo. Giả sử chúng ta bao gồm một phương thức thương hiệu là run () cùng nó là công khai. Bất cđọng lúc nào một đối tượng , bao gồm cách làm run () bên phía trong, chúng ta có thể Điện thoại tư vấn pmùi hương thức đó mà ko chạm mặt ngẫu nhiên lỗi nào. Đó là 1 trong những tình huống khá bình thường trường hợp họ không áp dụng bất kỳ cơ chế sửa thay đổi tróc nã cập nào khác .

2-Riêng tứ

Các “ tin từ bỏ khóa” không hoàn toàn trái ngược của “ công cộng từ khóa”. Nó không có thể chấp nhận được ngẫu nhiên Việc thực hiện nào phía bên ngoài lớp được khai báo. Nếu họ thay đổi cách làm public run () thành private, chúng ta cần thiết áp dụng nó ngơi nghỉ bất cứ chỗ nào đối tượng được sản xuất. Nếu bọn họ nỗ lực Call nó, trình biên dịch đã chạm chán lỗi ngay lập tức chớp nhoáng với câu "run () gồm quyền truy vấn riêng biệt tư".

Xem thêm: Tên Thật Soobin Hoàng Sơn : Chiều Cao, Tên Thật Là Gì? Just A Moment

3-Mặc định

Công thế sửa đổi quyền truy vấn " khoác định " không tồn tại tự khóa. Nếu Shop chúng tôi ko viết công khai , riêng biệt tư hoặc bảo vệ , điều đó có nghĩa là kết cấu dữ liệu có một phép tắc sửa thay đổi truy vấn khoác định . Công vắt sửa đổi quyền truy cập này cũng giảm bớt một vài quyền truy vấn dẫu vậy không nhiều nlỗi quyền riêng biệt tư . Nếu một cấu trúc dữ liệu là mang định , nó có thể được áp dụng vào cùng một gói mà lại ko được phép thực hiện trong các gói khác.

4-Được bảo vệ

Để giải thích tự khóa “ được bảo vệ ”, họ yêu cầu nhắc ngắn gọn cho một cơ chế OOPhường khác, “ Kế thừa ”. Tính kế thừa chất nhận được mối quan hệ cha-con thân các đối tượng . Với cơ chế đó, những lớp hoàn toàn có thể kế thừa một số thủ tục cùng biến chuyển trường đoản cú những lớp không giống và thực hiện chúng. Chúng tôi call “ lớp con ” kế thừa một trong những tài liệu tự các lớp không giống với “ lớp cha ” được thừa kế.

Sự khác biệt thân quá trình " mặc định " cùng " được bảo vệ " ở đây. Công cầm cố sửa thay đổi quyền truy cập mang định không có thể chấp nhận được thực hiện bên phía ngoài gói của chính nó nhưng những kết cấu dữ liệu được bảo vệ có thể được áp dụng trong các lớp con ở ko kể gói của chính nó .

Chúng tôi gọi câu hỏi thực hiện lao lý sửa thay đổi quyền truy vấn là “Ẩn dữ liệu” . Câu hỏi trnghỉ ngơi thành: Có đề xuất ẩn một vật dụng gì đấy Có nghĩa là họ sẽ không còn áp dụng nó nữa không? Không có quyền? Mọi người giấu một chiếc gì đó nhằm áp dụng sau đây nhưng chỉ khi cần thiết. Giống nhỏng phương pháp họ sử dụng dung dịch khi bị ốm. Sau lúc ẩn dữ liệu của bản thân, Shop chúng tôi rất có thể sản xuất một trong những cách thức để chuyển đổi phần đa dữ liệu này hoặc áp dụng chúng trong tương lai. Chúng tôi hotline mọi cách thức này là Pmùi hương pháp Getter với Setter” .

Phương thơm pháp Getter cùng Setter

Các cách tiến hành này không phải là các thủ tục quan trọng nhỏng các hàm tạo cùng chúng không nhất thiết phải được viết. Phương thức Getter cùng Setter chỉ đơn giản dễ dàng là các cách làm được chấp nhận và sử dụng bên trên trái đất cùng chúng gồm luật lệ đặt tên. Chúng tôi đặt "get" cùng "biến đổi tên" để đặt thương hiệu cho 1 Phương thức Getter , cùng công ty chúng tôi làm cho điều tương tự với "set" cho 1 thủ tục Setter . Nó không quan trọng cho những công việc mã tuy vậy nó làm cho mã của người tiêu dùng không bẩn rộng với dễ nắm bắt rộng. Hãy lý giải bởi một ví dụ:

public class Cat private String name; private int age; final int numOfLegs = 4; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age;

Cat cat = new Cat();cát.setName("Garfield");System.out.println(mèo.getName());

Giả sử chúng tôi viết mã này mang lại "Cuộc thi Người đẹp mắt Mèo" với chúng ta chỉ cho phép mèo 0-1 tuổi tđê mê gia cuộc thi. Nếu Shop chúng tôi cập nhật trực tiếp "age" bởi tân oán tử " = " , chúng tôi hoàn toàn có thể tạo ra các chức năng prúc không muốn sống khu vực không giống trong mã của Shop chúng tôi. Ngoài ra, phần lớn chúng ta có thể đề nghị đối phó với tương đối nhiều kân hận if-else . Nếu chúng ta ý muốn rời vấn đề này bằng cách sử dụng cách thức Setter , bọn họ đề xuất thêm 1 điều kiện vào tuổi của Phương pháp Setter :

public void setAge(int age) { if (age > 0 &và age

Phương thơm thức Getter với Setter cũng có thể chấp nhận được công ty chúng tôi chế tác “ Lớp chỉ đọc ” với “ Lớp chỉ ghi ”. Nlỗi chúng ta đang nói trước đó, những cách tiến hành GetterSetter không bắt buộc phải là một trong những phần của lớp đó. Chúng ta yêu cầu những cách làm Setter để tại vị một quý hiếm new cho một thay đổi private mà lại ví như chúng ta không tồn tại ngẫu nhiên cách làm Setter nào và chỉ có các cách thức Getter thì sao? Chúng ta chỉ rất có thể sử dụng biến đổi đó nhưng lại bọn họ không thể thay đổi biến đổi đó tự bên phía ngoài của lớp đó, biến đó khiến cho lớp kia Chỉ đọc .

//Read-Only Cat Classpublic class Cat private String name; private int age; public String getName() return name; public int getAge() return age;

//Write-Only Cat Classpublic class Cat private String name; private int age; public void setName(String name) this.name = name; public void setAge(int age) this.age = age;

Chúng tôi đang biết Encapsulation là gì và phương pháp sử dụng nó tuy vậy Cửa Hàng chúng tôi đã có được điều gì?

Chúng tôi vẫn ẩn tài liệu của bản thân mình ngoài các chuyển đổi bên cạnh ý hy vọng, Chúng tôi đang chế tạo một tấm tất cả quyền kiểm soát điều hành phần nhiều gì được tàng trữ bên trong các trường của nó, Chúng tôi đã sinh sản những lớp Chỉ phát âm và Chỉ ghi, Chúng tôi đã sút những lỗi vày bé tín đồ gây ra, Chúng tôi đang viết mã của chính mình Theo phong cách ví dụ với dễ nắm bắt hơn, Chúng tôi đã làm cho áp dụng của Shop chúng tôi dễ dàng rộng.
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *