Hướng dẫn can static method be private php? - static method có thể là private php không?

Tôi chỉ muốn làm rõ một câu hỏi tôi có. Điểm của một phương pháp tĩnh riêng trái ngược với một phương pháp bình thường với khả năng hiển thị riêng tư?

Tôi đã nghĩ rằng một lợi thế để có một phương pháp tĩnh là nó có thể được gọi mà không có một trường hợp của một lớp, nhưng vì riêng tư của nó có phải là một điểm cho nó là tĩnh?

Lý do duy nhất tôi có thể nghĩ đến là nó giúp hiểu về mặt khái niệm phương pháp ở cấp độ lớp trái ngược với cấp độ đối tượng.

Hướng dẫn can static method be private php? - static method có thể là private php không?

Dednplicator

8.3085 Huy hiệu vàng30 Huy hiệu bạc49 Huy hiệu đồng5 gold badges30 silver badges49 bronze badges

Hỏi ngày 1 tháng 4 năm 2014 lúc 14:11Apr 1, 2014 at 14:11

10

Đặc điểm của tĩnh là độc lập với khả năng hiển thị.

Những lý do mà bạn sẽ muốn có một phương thức tĩnh (một số mã không phụ thuộc vào các thành viên không tĩnh) vẫn sẽ hữu ích. Nhưng có lẽ bạn không muốn bất cứ ai/bất cứ thứ gì khác sử dụng nó, chỉ là lớp học của bạn.

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 14:20Apr 1, 2014 at 14:20

7

Một lý do khá phổ biến (trong Java) sẽ là để khởi tạo các biến trường bất biến trong một hàm tạo bằng cách sử dụng phương pháp private static đơn giản để giảm sự lộn xộn của hàm tạo.

  • Đó là private: Các lớp bên ngoài không nên nhìn thấy nó.
  • Đó là static: Nó có thể thực hiện một số hoạt động, độc lập1 của trạng thái của lớp chủ.

Một ví dụ hơi giả tạo theo sau ...

eg:

public class MyClass{
    private final String concatenated;

    public MyClass(String a, String b){
        concatenated = concat(a,b);
    }

    public String getConcatenated(){
       return concatenated;
    }

    /**
    *  Concatenates two Strings as `s1---s2`
    **/
    private static final String concat(String s1, String s2){
        return String.format("%s---%s", s1, s2);
    }
}

1 Giả sử nó không có tương tác với các biến static khác.

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 15:14Apr 1, 2014 at 15:14

2

Trường hợp sử dụng phổ biến cho phương pháp private static là một phương thức tiện ích là

  1. chỉ được sử dụng bởi một lớp đó
  2. độc lập với trạng thái nội bộ của lớp đó

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 16:46Apr 1, 2014 at 16:46

PhilippphilippPhilipp

22,9K5 Huy hiệu vàng60 Huy hiệu bạc67 Huy hiệu đồng5 gold badges60 silver badges67 bronze badges

1

Bạn thấy rằng bạn có một vài dòng mã được lặp lại trong rất nhiều phương thức của bạn, vì vậy bạn quyết định trích xuất chúng vào một phương thức duy nhất, vì mã trùng lặp là không tốt.

Bạn làm cho phương thức riêng tư vì nó không được thiết kế để sử dụng rộng rãi và bạn không muốn mã không liên quan gọi nó. (Tranh luận về điểm này trong các bình luận.)

Vì phương thức không truy cập bất kỳ trường thể hiện nào, nên nó có thể làm tĩnh, bằng cách làm cho nó tĩnh, bạn làm cho nó dễ hiểu hơn và thậm chí có thể nhanh hơn một chút.

Sau đó .... (có lẽ bây giờ, có lẽ sau này, có lẽ không bao giờ) (Maybe now, maybe later, maybe never)

Một khi phương pháp đã được thực hiện tĩnh, rõ ràng nó có thể được chuyển ra khỏi lớp, nói với một lớp thống nhất.clear that it can be moved out of the class, say to an unity class.

Nó cũng dễ dàng chuyển đổi nó thành một phương thức thể hiện của một trong các tham số của nó, thường thì đây là nơi mà mã nên có.

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 16:17Apr 1, 2014 at 16:17

IanianIan

4.58418 Huy hiệu bạc28 Huy hiệu đồng18 silver badges28 bronze badges

2

Tôi có thể nghĩ rằng ít nhất hai lý do tại sao bạn sẽ cần một phương thức riêng tư tĩnh trên một lớp học.

1: Các trường hợp của bạn có lý do để gọi một phương thức tĩnh mà bạn không muốn gọi trực tiếp, có lẽ vì nó chia sẻ dữ liệu giữa tất cả các trường hợp của lớp bạn.

2: Các phương thức tĩnh công khai của bạn có các chương trình con mà bạn không muốn được gọi là trực tiếp. Phương pháp vẫn được gọi mà không có một ví dụ, chỉ là không trực tiếp.

Tất nhiên, "nó giúp cả lớp có ý nghĩa" là một lý do tốt cho riêng mình.

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 14:59Apr 1, 2014 at 14:59

DougmdougmDougM

6.3601 Huy hiệu vàng16 Huy hiệu bạc34 Huy hiệu đồng1 gold badge16 silver badges34 bronze badges

1

Nói chung, nếu tôi thấy tôi đang viết các phương thức tĩnh riêng tư, tôi coi đó là một dấu hiệu cho thấy có một cái gì đó tôi nên mô hình riêng.

Vì chúng không bị ràng buộc với trạng thái của một trường hợp đối tượng cụ thể, một tập hợp các phương thức tĩnh công khai và riêng tư có thể tạo thành một lớp hoàn toàn riêng biệt với các phương pháp ngữ nghĩa & không tĩnh riêng của nó.

.

Vì vậy, để trả lời câu hỏi của bạn, các phương thức tĩnh riêng xuất hiện khi một lớp cung cấp một nhóm các phương thức liên quan độc lập với một ví dụ của lớp đó. (... và vì họ độc lập, họ có thể tốt hơn trong lớp của họ.)

Đã trả lời ngày 1 tháng 4 năm 2014 lúc 17:53Apr 1, 2014 at 17:53

sea-robsea-robsea-rob

6.7911 Huy hiệu vàng23 Huy hiệu bạc47 Huy hiệu đồng1 gold badge23 silver badges47 bronze badges

Tĩnh luôn tốt hơn so với không tĩnh và tệ hơn các chức năng miễn phí, điều này tồi tệ hơn một chức năng thuần túy.

Riêng tư luôn tốt hơn được bảo vệ tốt hơn so với công chúng.

'Cần phải biết' nguyên tắc.

Đã trả lời ngày 6 tháng 8 năm 2020 lúc 12:38Aug 6, 2020 at 12:38

VoracvoracVorac

6,9656 Huy hiệu vàng37 Huy hiệu bạc58 Huy hiệu Đồng6 gold badges37 silver badges58 bronze badges

Ví dụ rất đơn giản tôi có thể nghĩ đến là, nếu bạn muốn thực hiện một số xử lý trên các đối số đầu vào (hoặc một số thao tác) được truyền cho chức năng chính. Vì vậy, trong trường hợp này nếu xử lý là lớn và cùng chức năng sẽ không được sử dụng ở bất kỳ nơi nào khác, nó sẽ có ý nghĩa khi có chức năng riêng tư vì nó sẽ không được sử dụng/gọi từ bất kỳ nơi nào khác + tĩnh như chính là tĩnh.

Đã trả lời ngày 8 tháng 4 năm 2014 lúc 5:57Apr 8, 2014 at 5:57

Một phương pháp tĩnh có thể được riêng tư?

Có, chúng ta có thể có các phương thức riêng tư hoặc phương thức tĩnh riêng trong giao diện trong Java 9. Chúng ta có thể sử dụng các phương thức này để loại bỏ dự phòng mã.Các phương thức riêng tư chỉ có thể hữu ích hoặc chỉ có thể truy cập trong giao diện đó.Chúng tôi không thể truy cập hoặc kế thừa các phương thức riêng tư từ giao diện này sang giao diện hoặc lớp khác.. We can use these methods to remove the code redundancy. Private methods can be useful or accessible only within that interface only. We can't access or inherit private methods from one interface to another interface or class.

Một lớp tĩnh có thể có thành viên tư nhân?

Do đó, việc tạo một lớp tĩnh về cơ bản giống như tạo một lớp chỉ chứa các thành viên tĩnh và một hàm tạo riêng.Một nhà xây dựng tư nhân ngăn không cho lớp được khởi tạo. and a private constructor. A private constructor prevents the class from being instantiated.