1. Công cụ sửa đổi truy cập

Trước mỗi phương thức, người lập trình có thể chỉ định cái gọi là công cụ sửa đổi truy cập. Chúng bao gồm các từ khóa sau: public, protected, private.

Các công cụ sửa đổi truy cập này cho phép bạn hạn chế quyền truy cập của các lớp khác vào một phương thức.

Ví dụ: nếu bạn viết privatetừ khóa trước một khai báo phương thức, thì phương thức đó chỉ có thể được gọi từ cùng một lớp mà nó được khai báo. Từ publickhóa cho phép truy cập vào phương thức được đánh dấu từ bất kỳ phương thức nào của bất kỳ lớp nào.

Có tổng cộng 3 công cụ sửa đổi như vậy, nhưng có 4 loại quyền truy cập vào một phương thức. Điều này là do việc không có công cụ sửa đổi truy cập cũng có ý nghĩa gì đó.

Truy cập từ...
sửa đổi Bất kỳ lớp nào lớp con gói của nó lớp học của nó
public Đúng Đúng Đúng Đúng
protected KHÔNG Đúng Đúng Đúng
không có công cụ sửa đổi KHÔNG KHÔNG Đúng Đúng
private KHÔNG KHÔNG KHÔNG Đúng

1. publicsửa đổi

Một phương thức (hoặc biến hoặc lớp) được đánh dấu bằng công publiccụ sửa đổi có thể được truy cập từ bất kỳ đâu trong chương trình . Đây là mức độ mở cao nhất — không có giới hạn nào.

2. privatesửa đổi

Một phương thức (hoặc biến hoặc lớp) được đánh dấu bằng công privatecụ sửa đổi chỉ có thể được truy cập từ cùng một lớp nơi nó được khai báo . Đối với tất cả các lớp khác, phương thức (hoặc biến) được đánh dấu là vô hình. Nó như thể nó không tồn tại. Đây là mức hạn chế cao nhất—chỉ dành cho lớp của chính nó.

3. Không có công cụ sửa đổi (công cụ sửa đổi mặc định)

Nếu một phương thức (hoặc biến) không được đánh dấu bằng bất kỳ công cụ sửa đổi nào, thì nó được coi là có 'công cụ sửa đổi mặc định'. Các biến hoặc phương thức với công cụ sửa đổi đó (tức là không có gì cả) hiển thị cho tất cả các lớp trong gói mà chúng được khai báo . Và chỉ với họ. Công cụ sửa đổi này đôi khi cũng được gọi là package-private, gợi ý rằng quyền truy cập vào các biến và phương thức được mở cho toàn bộ gói chứa lớp của chúng.

4. protectedsửa đổi

Nếu một phương thức được đánh dấu bằng công protectedcụ sửa đổi, thì nó có thể được truy cập từ cùng một lớp, cùng một gói và hậu duệ (các lớp kế thừa lớp mà phương thức được khai báo). Chúng tôi sẽ phân tích chủ đề này chi tiết hơn trong nhiệm vụ Java Core.

Bạn có thể sử dụng công publiccụ sửa đổi trên tất cả các phương thức của mình (cũng như tất cả các lớp và biến lớp của bạn) cho đến khi bạn kết thúc nhiệm vụ Cú pháp Java. Bạn sẽ cần các công cụ sửa đổi khác khi chúng tôi bắt đầu tích cực học OOP.

Tại sao cần có công cụ sửa đổi truy cập?

Chúng trở nên cần thiết cho các dự án lớn được viết bởi hàng chục, hàng trăm lập trình viên cùng một lúc.

Đôi khi có những tình huống khi một lập trình viên muốn chia một phương thức quá lớn thành nhiều phần và chuyển một phần mã thành các phương thức trợ giúp. Nhưng đồng thời, anh ấy hoặc cô ấy không muốn các lập trình viên khác gọi các phương thức trợ giúp này, bởi vì mã tương ứng có thể không hoạt động chính xác.

Vì vậy, họ đã nghĩ ra những công cụ sửa đổi quyền truy cập này. Nếu bạn đánh dấu một phương thức trợ giúp bằng từ private thì không mã nào khác ngoài lớp của bạn có thể thấy phương thức trợ giúp của bạn.



2. statictừ khóa

Từ statickhóa làm cho một phương thức tĩnh. Chúng ta sẽ xem điều đó có nghĩa là gì sau. Bây giờ, chỉ cần nhớ một vài sự thật về các phương thức tĩnh.

Sự thật 1. Một phương thức tĩnh không gắn liền với bất kỳ đối tượng nào , mà thay vào đó thuộc về lớp mà nó được khai báo. Để gọi một phương thức tĩnh, bạn cần viết:

ClassName.MethodName()

Ví dụ về các phương thức tĩnh:

Tên lớp Tên phương thức tĩnh
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

Tên lớp trước tên của một phương thức tĩnh có thể được bỏ qua nếu bạn gọi phương thức tĩnh từ bên trong lớp của nó. Đây là lý do tại sao bạn không cần viết Solutiontrước tên của từng phương thức tĩnh được gọi.

Sự thật 2. Một phương thức tĩnh không thể truy cập các phương thức không tĩnh của lớp riêng của nó. Một phương thức tĩnh chỉ có thể truy cập các phương thức tĩnh. Do đó, chúng tôi khai báo tất cả các phương thức mà chúng tôi muốn gọi từ mainphương thức tĩnh.

Tại sao? Bạn sẽ có thể tự trả lời câu hỏi này khi bắt đầu học OOP và hiểu cách hoạt động của các phương thức tĩnh.



3. throwstừ khóa

Có một từ khóa khác mà bạn có thể đã thấy trong phần khai báo phương thức - throwstừ khóa. Không giống như công cụ sửa đổi truy cập và statictừ khóa, từ khóa này được đặt sau các tham số của phương thức:

public static Type name(parameters) throws Exception
{
  method body
}

Chúng ta sẽ xem xét ý nghĩa chính xác của nó sau này khi chúng ta nghiên cứu các ngoại lệ.

Nhưng khi chạm vào nó một cách hời hợt, chúng ta có thể nói rằng một phương thức được đánh dấu bằng từ khóa throws có thể đưa ra lỗi (ngoại lệ), nghĩa là các thể hiện của lớp Exception (và các lớp kế thừa nó). Nếu một số loại lỗi khác nhau có thể xảy ra trong một lớp, thì bạn cần liệt kê từng loại lỗi được phân tách bằng dấu phẩy.


4. mainphương pháp

Dòng mà một phương thức được khai báo, chứa tất cả các công cụ sửa đổi, sẽ ảnh hưởng đến cách phương thức này được gọi từ các lớp và phương thức khác. Nó ảnh hưởng đến loại kết quả mà phương thức sẽ trả về và cho biết những lỗi nào có thể xảy ra khi nó chạy.

Một dòng như vậy được gọi là khai báo phương thức và có định dạng chung như sau:

access modifier static Type name(parameters) throws exceptions
Định dạng chung của khai báo phương thức

Ở đâu access modifiers được thay thế bằng public, protected, privatehoặc không có gì cả;

nếu phương thức là tĩnh, thì statictừ khóa sẽ xuất hiện (không có đối với các phương thức không tĩnh)

Typelà loại giá trị trả về ( voidnếu không có kết quả)

Bây giờ chắc bạn đã hiểu ý nghĩa của tất cả các từ khóa trong phần khai báo của mainphương thức:

public static void main(String[] args) throws Exception
Khai báo mainphương thức

main()Có thể truy cập vào phương thức từ bất kỳ lớp nào, như được chỉ ra bởi publictừ khóa.

Phương thức này là tĩnh, vì vậy nó có thể được gọi rõ ràng là Solution.main().

Phương mainthức không trả về bất kỳ kết quả nào. Loại trả về là void(không có loại).

Phương thức này mainnhận các đối số (!): một mảng các chuỗi. Và tên tham số argsgợi ý 'đối số' cho tâm trí của chúng tôi. Khi chương trình bắt đầu, bạn có thể truyền cho nó các đối số — một mảng các chuỗi. Chúng sẽ được chứa trong args mảng trong main()phương thức.

Các lỗi chưa được xử lý như Exception(hoặc hậu duệ của nó) có thể xảy ra trong main()phương thức.