Phương thức static (class) và instance

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.