Bài 8: Phương thức (method) trong Java

1. Khái niệm:

Hàm hay phương thức (method) trong Java là khối lệnh
thực hiện các chức năng, các hành vi xử lý của lớp lên vùng dữ
liệu. Trong lập trình cấu trúc, các bạn đã làm quen với khái niệm hàm, thủ tục.
Trong lập trình hướng đối tượng, chúng ta sẽ hạn chế gọi như vậy, hãy
quen gọi chúng là phương thức, nó liên quan đến tính hướng đối tượng trong Java!

2. Khai báo phương thức:

<Tiền tố> <kiểu trả về> <Tên phương thức> (<danh sách đối số>){
<khối lệnh>;
}

Để xác định quyền truy xuất của các đối tượng khác đối với
các phương thức của lớp người ta thường dùng các tiền tố sau:

public: phương thức có thể truy cập được từ bên ngoài
lớp khai báo.
protected: có thể truy cập được từ lớp khai báo và
những lớp dẫn xuất từ nó.
private: chỉ được truy cập bên trong bản thân lớp khai
báo.
static: phương thức lớp dùng chung cho tất cả các thể
hiện của lớp, có nghĩa là phương thức đó có thể được
thực hiện kể cả khi không có đối tượng của lớp chứa
phương thức đó.
final: phương thức có tiền tố này không được khai báo
chồng ớ các lớp dẫn xuất.
abstract: phương thức không cần cài đặt (không có
phần source code), sẽ được hiện thực trong các lớp dẫn
xuất từ lớp này.
synchoronized: dùng để ngăn các tác động của các đối
tượng khác lên đối tượng đang xét trong khi đang đồng
bộ hóa. Dùng trong lập trình miltithreads.

– <kiểu trả về>: có thể là kiểu void, kiểu cơ sở hay một lớp.
– <Tên phương thức>: đặt theo qui ước giống tên biến.
– <danh sách thông số>: có thể rỗng

Chú ý:
– Thông thường trong một lớp các phương thức nên được
khai báo dùng từ khóa public, khác với vùng dữ liệu thường là
dùng tiền tố private vì mục đích an toàn.
– Những biến nằm trong một phương thức của lớp là các biến
cục bộ (local) và nên được khởi tạo sau khi khai báo.
Ví dụ 1: Tạo 1 lớp học sinh gồm các thuộc tính: họ tên, lớp, điểm toán, lý, hóa.
Tính điểm trung bình, tính xếp loại học lực!

** Phân tích: Ở đây tính điểm trung bình của 3 môn, như vậy phương thức tính điểm
có 3 đối số truyền vào và trả về 1 giá trị là số thực.
Tính xếp loại học lực, đối số vào là 1 biến thực duy nhất, phương thức này trả về 1 chuỗi
là xếp loại: yếu, trung bình, khá hoặc giỏi.
Code như sau:

class HocSinh {
 
    public String hoTen, lop;
    public float toan, ly, hoa;
 
    public float diemTB(float toan, float ly, float hoa) {
 
        return (float) (toan + ly + hoa) / 3;
    }
 
    public String xepLoai(float diemTB) {
        if (diemTB >= 8 && diemTB <= 10) {
            return "giỏi";
        }
        if (diemTB >= 6.5f && diemTB < 8) {
            return "khá";
        }
        if (diemTB >= 5.0f && diemTB < 6) {
            return "trung bình";
        }
        if (diemTB >= 0.0f && diemTB < 5) {
            return "yếu";
        }
        return "Nhập sai!";
    }
}
 
public class JavaDemo {
 
    public static void main(String[] args) {
        HocSinh a = new HocSinh();
        a.hoTen = "Vu Van T";
        a.lop = "At7a";
        a.toan = 8.0f;
        a.ly = 9.0f;
        a.hoa = 10.0f;
 
        System.out.println("Thông tin: ");
        System.out.println("Họ tên: " + a.hoTen + " - Lớp: " + a.lop);
        System.out.println("Toán: " + a.toan + " Lý:" + a.ly + " Hóa: " + a.hoa);
        System.out.println("Điểm trung bình: " + a.diemTB(a.toan, a.ly, a.hoa));
        System.out.println("Xếp loại " + a.xepLoai(a.diemTB(a.toan, a.ly, a.hoa)));
    }
}

Ví dụ 2: Gán chiều dài, chiều rộng hình chữ nhật, hiện lên màn hình kích thước đó.
Tính diện tích và chu vi hình chữ nhật theo cách viết code hướng đối tượng!

** Phân tích: Các hình chữ nhật có 2 thuộc tính là chiều dài và chiều rộng.
– Để hiện lại chiều dài, chiều rộng , ta dùng 1 phương thức show, không có giá trị trả về, nhưng
có giá trị biến đầu vào là chiều dài và chiều rộng hình chữ nhật!
– Để tính diện tích và chu vi, ta tạo 2 phương thức dienTich, chuVi với 2 biến vào (đối số vào)
là chiều rộng, chiều dài.
– Để hiện giá trị diện tích và chu vi, ta dùng 1 phương thức showKetQua, với 2 đối số
thực nhập vào là chu vi, diện tích hình tròn.
– Cuối bài, thử tạo 1 phương thức show ra chữ ký kết thúc bài, sẽ không có đối số nào!
Nó chỉ hiện ra 1 dòng ký tự.
Code như sau:

class HCN {
 
    public float chieuDai;
    public float chieuRong;
 
    public void showChieuDai(float dai, float rong) {
        System.out.println("Hình chữ nhật có kích thước: ");
        System.out.println("Chiều dài: " + dai);
        System.out.println("Chiều rộng: " + rong);
    }
 
    public float chuVi(float dai, float rong) {
        return (dai + rong) * 2;
    }
 
    public float dienTich(float dai, float rong) {
        return dai * rong;
    }
 
    public void showKetQua(float cv, float dt) {
        System.out.println("Chu vi hình chữ nhật là: " + cv);
        System.out.println("Diện tích hình chữ nhật là " + dt);
    }
 
    public void showChuKy() {
        System.out.println("Kết thúc bài tính toán hình chữ nhật, xin chào, hẹn gặp lại bạn ở bài tiếp theo!");
    }
}
 
public class JavaDemoAndroidVn {
 
    public static void main(String[] args) {
        HCN a = new HCN();
        a.chieuDai = 6.0f;
        a.chieuRong = 10.0f;
        a.showChieuDai(a.chieuDai, a.chieuRong);
        a.showKetQua(a.chuVi(a.chieuDai, a.chieuRong), a.dienTich(a.chieuDai, a.chieuRong));
        a.showChuKy();
    }
}

Nguyễn Linh

Chia sẻ để cùng tiến bộ...