Tiếp theo bài giới thiệu về Overloading và Overriding, tôi muốn tóm lại sự khác biệt cũng như điểm lưu ý của các phương thức lớp (phương thức tĩnh) và phương thức instance. Đây là hai kiểu phương thức sử dụng phổ biến trong lập trình hướng đối tượng
Phương thức lớp (tĩnh) (Static Methods): là phương thức được gọi thông qua tên lớp. Trong quá trình cài đặt phương thức chúng ta dùng từ khóa static.
Xem ví dụ:
class MyUtils { . . . //================================================= mean public static double mean(int[] p) { int sum = 0; // sum of all the elements for (int i=0; i<p.length; i++) { sum += p[i]; } return ((double)sum) / p.length; }//endmethod mean . . . }
Muốn gọi phương thức này bên trong lớp mô tả nó, chúng ta chỉ cần sử dụng tên phương thức: mean(). Tuy nhiên, nếu gọi phương thức bên ngoài lớp chúng ta phải kèm theo tên lớp; nghĩa là: MyUtils.mean().
Phương thức instance: kết hợp với một object và các biến instance của object đó.
Ví dụ:
// File : dialog/capitalize/Capitalize2.java // Purpose: Capitalize first letter of each name. Declare with first use. // Author : Fred Swartz - placed in public domain. // Date : 30 Mar 2006 import javax.swing.*; public class Capitalize2 { public static void main(String[] args) { //.. Input a word String inputWord = JOptionPane.showInputDialog(null, "Enter a word"); //.. Process - Separate word into parts, change case, put together. String firstLetter = inputWord.substring(0,1); // Get first letter String remainder = inputWord.substring(1); // Get remainder of word. String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase(); //.. Output the result. JOptionPane.showMessageDialog(null, capitalized); } }
Các phương thức: substring, toUpperCase, toLowerCase là các phương thức instance. Các phương thức showInputDialog, showMessageDialog là các phương thức lớp.