Các loại phạm vi truy cập trong lập trình hướng đối tượng

Lập trình Java cơ bản đến hướng đối tượng

4.6 (11 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 22:41 25-07-2020 54.130 lượt xem 1 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Dẫn nhập

Trong bài trước, Kteam có nhắc đến cho các bạn về CLASS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG. Hôm nay hãy đi sâu về Phạm vi truy cập trong lập trình hướng đối tượng.


Nội dung

Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:

Bài này chúng ta sẽ tìm hiểu những vấn đề sau:

  • Phạm vi truy cập là gì? Package là gì?
  • Các loại phạm vi truy cập

Phạm vi truy cập là gì? Package là gì?

Phạm vi truy cập (access modifiers) là xác định độ truy cập phạm vi vào dữ liệu của các thuộc tính, phương thức hoặc class.

Package (gói) là nhóm các class, interface hoặc các package con liên quan lại với nhau. Việc dùng package dùng để nhóm các class liên quan với nhau thành thư viện như thư viện swing, awt,…Ngoài ra, mục đích của package ngăn cản xung đột đặt tên, điều kiện truy cập, thuận tiện tìm kiếm và lưu trữ.


Các loại phạm vi truy cập

Có 4 loại phạm vi truy cập:

  • Private
  • (Default)
  • Protected
  • Public

Bây giờ Kteam sẽ tạo một package tên là mypack và đưa class Person qua, việc này phục vụ cho những ví dụ phía dưới. Các bạn làm như sau trên Eclipse:

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Rồi ta kéo class Person qua package mypack

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Nếu các bạn sử dụng theo cách truyền thống. Thì bản chất package trong Java chính là folder chứa class mà thôi. Khi bạn xem trong source project, nó sẽ đổi như sau:

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Và bạn sẽ để ý, trong các file java nó sẽ có sửa đổi như sau:

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Việc thay đổi này do IDE Eclipse tự sửa cho chúng ta:

  • Khi ta tạo một class nằm trong một package nào đó thì phải khai báo package đầu tiên: Ở đây class Person nằm trong package mypack. Ta sẽ viết  package mypack;
  • Khi ta sử dụng một class nằm ở packge khác, ta phải import qua để chương trình hiểu ta đang sử class của package nào. Theo đường dẫn class Person nằm trong package mypack, nên ở class HelloWorld ta sẽ viết import mypack.Person;

Private

Private chỉ cho phép truy cập nội bổ của một class.

Ví dụ: cho thuộc tính age của class Person ở dạng private, thì chỉ có thể truy cập age trong class Person.

Các loại phạm vi truy cập trong lập trình hướng đối tượng


(Default)

Đây là phạm vị mặc định, khi bạn không ghi gì hết thì nó để phạm vị truy cập dạng này: Ở mặc định, phạm vi truy cập chỉ nằm trong nội bộ package.

Ví dụ: ta xóa tất cả phạm vị truy cập ở class Person như sau

class Person {
	String name;
	int age;
	float height;
	
	void eat(String foodName) {
		System.out.println(name + " is eating "+ foodName);
	}
	
	int getAge() {
		return age;
	}
}


Nếu ta quay lại cho class Person HelloWorld chung một package thì sử dụng được:

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Nhưng nếu để class Person ở package mypack thì sẽ báo lỗi:

Các loại phạm vi truy cập trong lập trình hướng đối tượng


Protected

Protected là phạm vi truy cập có thể từ trong và ngoài package, nhưng phải thông qua tính kế thừa. Tính kế thừa sẽ được Kteam giải thích rõ hơn trong bài TÍNH KẾ THỪA TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG. Protected chỉ có thể áp dụng bên trong class như thuộc tính, phương thức hay lớp con. Không thể áp dụng cho lớp ngoài hay interface.

Ví du: ta sửa class Person như sau:

package mypack;
public class Person {
	protected String name;
	protected int age;
	protected float height;
	
	public Person(String name, int age, float height) {
		this.name = name;
		this.age = age;
		this.height = height;
	}
	
	protected void eat(String foodName) {
		System.out.println(name + " is eating "+ foodName);
	}
	
	protected int getAge() {
		return age;
	}
}


Để truy cập được Person, ta sẽ cho class HelloWorld kế thừa class Person. Rồi sẽ tạo đối tượng HelloWorld trong main:

import mypack.Person;

public class HelloWorld extends Person {

	protected HelloWorld(String name, int age, float height) {
		//phương thức khởi tạo HelloWorld sẽ gọi phương thức Person
		super(name, age, height);
	}

	public static void main(String[] args) {
		HelloWorld a = new HelloWorld("Chau", 21, 1.7f);
		a.eat("Rice");
	}
}

Các loại phạm vi truy cập trong lập trình hướng đối tượng

Chắc chắn các bạn sẽ thấy khó hiểu ở dòng code trên. Không sao, vì đó là một khái niệm khác nên các bạn có thể đọc qua và xem kĩ những bài sau.


Public

Đây phạm vi truy cập rộng, có thể truy cập bất cứ đâu trong project Java. Tất nhiên khi khác package để cần phải khai báo import để xác định ví trí của class như phần giải thích trên trên.

Các loại phạm vi truy cập trong lập trình hướng đối tượng


Kết

Như vậy chúng ta đã tìm hiểu các loại phạm vi truy cập trong lập trình hướng đối tượng

Ở bài sau, Kteam sẽ giới thiệu đến bạn về TỪ KHOÁ STATIC TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Các loại phạm vi truy cập trong lập trình hướng đối tượng dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Lập trình Java cơ bản đến hướng đối tượng

Với mục đích giới thiệu đến mọi người về Ngôn ngữ Java -  một ngôn ngữ lập trình khá mới mẻ so với C, C++, Java, PHP ở Việt Nam.

Thông qua khóa học LẬP TRÌNH JAVA CƠ BẢN ĐẾN HƯỚNG ĐỐI TƯỢNG, Kteam sẽ hướng dẫn các bạn kiến thức cơ bản của Java. Để từ đó, có được nền tảng cho phép bạn tiếp tục tìm hiểu những kiến thức tuyệt vời khác của Java hoặc là một ngôn ngữ khác.

Cụ thể trong khóa học này, Kteam sẽ giới thiệu với các bạn Java ở phiên bản Java 8

Đánh giá

Anh Cương đã đánh giá 17:50 06-10-2023

tuandung2004 đã đánh giá 09:47 07-02-2023

bài thì trừu tượng , anh thì nói nhanh , em chả hiểu j

Vo Tan Duc đã đánh giá 18:19 30-12-2022

Very very important!

Hồ Hữu Đạt đã đánh giá 16:22 14-09-2021

Lê Chí Luân đã đánh giá 18:40 01-08-2021

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
voduckhoa28t10 đã bình luận 21:30 12-07-2020

bài tập về nhà ở đâu nhỉ?

Không có video.