GP Coder

Trang chia sẻ kiến thức lập trình Java

  • Java Core
    • Basic Java
    • OOP
    • Exception Handling
    • Multi-Thread
    • Java I/O
    • Networking
    • Reflection
    • Collection
    • Java 8
  • Design pattern
    • Creational Pattern
    • Structuaral Pattern
    • Behavior Pattern
  • Web Service
    • SOAP
    • REST
  • JPA
  • Java library
    • Report
    • Json
    • Unit Test
  • Message Queue
    • ActiveMQ
    • RabbitMQ
  • All
Trang chủ Java Core OOP Tính đóng gói (Encapsulation) trong java

Tính đóng gói (Encapsulation) trong java

Đăng vào 05/11/2017 . Được đăng bởi GP Coder . 26527 Lượt xem . Toàn màn hình

Tính đóng gói hay tính bao đóng (Encapsulation) là một trong bốn tính chất cơ bản của lập trình hướng đối tượng trong Java.

Tính đóng gói là kỹ thuật ẩn giấu thông tin không liên quan và hiện thị ra thông liên quan. Mục đích chính của đóng gói trong java là giảm thiểu mức độ phức tạp phát triển phần mềm.

Tính bao đóng trong Java là một tiến trình đóng gói code và dữ liệu lại với nhau vào trong một đơn vị unit đơn. Chúng ta có thể tạo một lớp được bao đóng hoàn toàn trong Java bằng việc tạo tất cả thành viên dữ liệu của lớp là private. Bây giờ, chúng ta sử dụng phương thức setter và getter để thiết lập và lấy dữ liệu trong nó.

Tính bao đóng là kỹ thuật tạo một trường của lớp private và cung cấp khả năng truy cập trường này qua các phương thức pullic. Nếu một trường được khai báo là private, nó không thể được truy cập bởi bên ngoài lớp, do đó có thể che dấu các trường có lớp này. Vì lý do này, tính bao đóng được ám chỉ như việc dấu dữ liệu (data hiding).

Để đạt được đóng gói trong Java chúng ta cần:

  • Khai báo các biến của một lớp là private.
  • Cung cấp phương thức setter và getter là public để có thể sửa đổi và xem các giá trị biến.

Ví dụ:

Student.java


package com.gpcoder.encapsulation;

public class Student {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

Các phương thức public setXXX() và getXXX() là các điểm truy cập đến các biến của lớp Student. Thông thường, các phương thức này được gọi là getters và setters. Vì vậy, bất kỳ đối tượng nào nào muốn truy cập vào các biến private sẽ truy cập chúng thông qua các trình getters và setters này.

Các biến của lớp Student có thể được truy cập như chương trình dưới đây:

package com.gpcoder.encapsulation;

public class EncapsulationExample {

	public static void main(String[] args) {
		Student s = new Student();
		s.setName("gpcode.com");
		System.out.println(s.getName());
	}

}

Kết quả thực thi chương trình trên:

gpcode.com

Lưu ý Quy ước đặt tên:

Quy ước đặt tên biến trong Java: từ đầu tiên là viết thường, từ thứ hai trở đi viết hoa chữ cái đầu tiên ở mỗi từ. Xem thêm ở bài viết Tiêu chuẩn coding trong Java (Coding Standards).

Quy ước đặt tên phương thức getter và setter như sau:

  • Getter: bắt đầu bằng chữ get + viết hoa chữ đầu tiên tất cả các từ (viết hoa chữ đầu tiên của tên biến).
  • Setter: bắt đầu bằng chữ set + viết hoa chữ đầu tiên tất cả các từ (viết hoa chữ đầu tiên của tên biến).

Ví dụ:


private String firstName;

public void setFirstName() {

}

public String getFirstName() {

}

Lợi ích của đóng gói trong java

  • Tất cả các trường (field) của lớp có có chế độ chỉ đọc (read-only) hoặc chỉ ghi (write-only), tức là chỉ có hàm getter hoặc setter.
  • Một lớp có thể có toàn bộ điều khiển thông qua những gì được lưu giữ trong các trường (field) của nó.
  • Người sử dụng của class không biết cách các class lưu trữ dữ liệu. Một class có thể thay đổi kiểu dữ liệu của một trường và người dùng class không cần sự thay đổi trong code.

Tài liệu tham khảo:

  • https://www.javatpoint.com/encapsulation
  • https://www.tutorialspoint.com/java/java_encapsulation.htm
4.1
14
Nếu bạn thấy hay thì hãy chia sẻ bài viết cho mọi người nhé! Và Donate tác giả

Shares

Chuyên mục: OOP Được gắn thẻ: Basic Java, OOP

Object cloning trong java
Tính kế thừa (Inheritance) trong java

Có thể bạn muốn xem:

  • Từ khóa this và super trong Java (01/11/2017)
  • Tính trừu tượng (Abstraction) trong Java (05/11/2017)
  • Cơ chế Upcasting và Downcasting trong java (05/11/2017)
  • Các nguyên lý thiết kế hướng đối tượng – SOLID (09/08/2018)
  • Tính kế thừa (Inheritance) trong java (05/11/2017)

Bình luận

bình luận

Tìm kiếm

Bài viết mới

  • Clean code 13/01/2024
  • Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud 02/10/2020
  • Kết nối RabbitMQ sử dụng Web STOMP Plugin 19/06/2020
  • Sử dụng publisher confirm trong RabbitMQ 16/06/2020
  • Sử dụng Dead Letter Exchange trong RabbitMQ 13/06/2020

Xem nhiều

  • Hướng dẫn Java Design Pattern – Factory Method (97657 lượt xem)
  • Hướng dẫn Java Design Pattern – Singleton (97342 lượt xem)
  • Giới thiệu Design Patterns (87178 lượt xem)
  • Lập trình đa luồng trong Java (Java Multi-threading) (85894 lượt xem)
  • Giới thiệu về Stream API trong Java 8 (83401 lượt xem)

Lưu trữ

Thẻ đánh dấu

Annotation Authentication Basic Java Behavior Pattern Collection Creational Design Pattern Cấu trúc điều khiển Database Dependency Injection Design pattern Eclipse Exception Executor Service Google Guice Gson Hibernate How to Interceptor IO Jackson Java 8 Java Core JDBC JDK Jersey JMS JPA json JUnit JWT Message Queue Mockito Multithreading OOP PowerMockito RabbitMQ Reflection Report REST SOAP Structuaral Pattern Swagger Thread Pool Unit Test Webservice

Liên kết

  • Clean Code
  • JavaTpoint
  • Refactoring Guru
  • Source Making
  • TutorialsPoint
  • W3Schools Online Web Tutorials

Giới thiệu

GP Coder là trang web cá nhân, được thành lập với mục đích lưu trữ, chia sẽ kiến thức đã học và làm việc của tôi. Các bài viết trên trang này chủ yếu về ngôn ngữ Java và các công nghệ có liên quan đến Java như: Spring, JSF, Web Services, Unit Test, Hibernate, SQL, ...
Hi vọng góp được chút ít công sức cho sự phát triển cộng đồng Coder Việt.

Donate tác giả

Tìm kiếm các bài viết của GP Coder với Google Search

Liên hệ

Các bạn có thể liên hệ với tôi thông qua:
  • Trang liên hệ
  • Linkedin: gpcoder
  • Email: contact@gpcoder.com
  • Skype: ptgiang56it

Follow me

Copyright 2025 © GP Coder · All Rights Reserved · Giới thiệu · Chính sách · Điều khoản · Liên hệ ·

Share

Blogger
Delicious
Digg
Email
Facebook
Facebook messenger
Flipboard
Google
Hacker News
Line
LinkedIn
Mastodon
Mix
Odnoklassniki
PDF
Pinterest
Pocket
Print
Reddit
Renren
Short link
SMS
Skype
Telegram
Tumblr
Twitter
VKontakte
wechat
Weibo
WhatsApp
X
Xing
Yahoo! Mail

Copy short link

Copy link