Java, Thành viên lớp

Tram Ho

Instance & Static

Các thành phần có thể có mặt trong code định nghĩa của một class trong Java cũng được chia làm hai nhóm giống như đối với JavaScript và các ngôn ngữ lập trình khác có hỗ trợ OOP:

  • Instance Members – các thuộc tính property và các phương thức method thuộc về các object được tạo ra từ class, hay còn được gọi là các instance.
  • Static Members – các thuộc tính property và các phương thức method không thuộc về các instance mà thuộc về object đại diện cho class đó, và được tham chiếu từ tên class.

Overloading Methods

So với JavaScript thì cú pháp định nghĩa class của Java hầu hết là tương đồng, tuy nhiên cũng có một vài điểm khác biệt:

  • Các trình khởi tạo là các phương thức không gắn từ khóa constructor.
  • Có thể tồn tại nhiều phiên bản định nghĩa khác nhau của cùng một tên phương thức method name.

Điểm khác biệt đầu tiên thì có lẽ là do thiết kế ngôn ngữ ở thời điểm ban đầu, từ khóa constructor của JavaScript giúp cho các trình khởi tạo được đánh dấu tách biệt tốt hơn khi đặt cạnh code định nghĩa của các phương thức khác. Hy vọng là cũng có lúc Java cập nhật một vài đặc điểm nho nhỏ này để thêm phần hoàn hảo.

Điểm khác biệt thứ hai là do đặc trưng định kiểu của Javastatic-typing. Các ngôn ngữ định kiểu tĩnh luôn cố gắng hỗ trợ tính năng này để giúp người viết code có thể sử dụng lại các tên hàm. Có rất nhiều trường hợp khi chúng ta muốn có nhiều phiên bản định nghĩa của cùng một tên hàm, bởi chức năng tổng quát của hàm thì vẫn vậy, nhưng đối với bộ tham số đầu vào khác nhau thì sẽ có logic xử lý khác nhau đôi chút. Thao tác định nghĩa lại nhiều lần một tên hàm với các bộ chữ ký signature khác nhau được gọi là overloading methods.

Trong code ví dụ ở trên, chúng ta có trường hợp overload trình khởi tạo với một phiên bản không có tham số và một phiên bản có các tham số dữ liệu.

Một bộ chữ signature đại diện cho một phiên bản định nghĩa phương thức method bao gồm: kiểu dữ liệu trả về, tên của phương thức method name, kiểu dữ liệu của các tham số đầu vào. Do các trình khởi tạo trong Java không có tên nên chúng ta đang tạm thời có các bộ chữ ký như trên.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo