Friday, February 24, 2017

Bà i 18 Ghi đè phương thức Overriding Method trong Java

Bà i 18 Ghi đè phương thức Overriding Method trong Java


Bài 18: Ghi ?è ph??ng th?c (Overriding Method) trong Java

overloading-vs-overriding
?
1, Khái ni?m ghi ?è – override:

- ?ó là khi ph??ng th?c ?ã xu?t hi?n ? l?p cha và xu?t hi?n ti?p ? l?p con.
- Khi ??i t??ng thu?c l?p con g?i ph??ng th?c thì s? ch?n l?a và ch?y theo ph??ng th?c trong l?p con.
- N?u l?p con không có ph??ng th?c ?ó thì m?i lên ki?m ? l?p cha ?? ch?y.
- Ph??ng th?c ghi ?è có cùng tên, cùng tham s? truy?n vào, cùng ki?u giá tr? tr? v? v?i ph??ng th?c ? l?p cha!
- Ghi ?è là hình th?c ?a hình (polymorphism) trong quá trình th?c thi (Runtime)

? bài tr??c, ta bi?t ??n cách n?p ch?ng ph??ng th?c (Overloading method), nó cùng n?m trong 1 l?p. Còn ghi ?è ? ?ây, là sau khi l?p con k? th?a l?p cha c?a nó, ta ch?nh l?i 1 ph??ng th?c nào ?ó c?n thi?t, t?c là ghi ?è ?? ??t ???c theo ý mu?n!

2, Ví d?:

Ví d? 1: S? khác nhau gi?a Override và Overload

Untitled ?

Ví d? 2: 
- L?p "tên ng??i Vi?t" g?m 2 thu?c tính: "h?" và "tên" và ph??ng th?c hi?n th? tên ??y ?? theo th? t? h? + tên
- L?p "tên ng??i n??c ngoài" k? th?a t? l?p "tên ng??i Vi?t" , ph??ng th?c hi?n th? tên ??y ?? l?i theo th? t? tên + h?
- Nh? v?y, sau khi k? th?a ta ch? c?n ghi ?è l?i ph??ng th?c hi?n th? là xong!
Code:
PHP:
package javademoandroidvn;

class 
tenNguoiViet {

    public 
String tenho;

    public 
void show() {
        
System.out.println("Tên ??y ?? là: " this.ho " "+this.ten);
    }
}

class 
tenNguoiNuocNgoai extends tenNguoiViet {

    @
Override
    
public void show() {
        
System.out.println("Full name: " this.ten " " this.ho);
    }
}

public class 
JavaDemoAndroidVn {

    public static 
void main(String[] args) {
        
tenNguoiViet nguoiV = new tenNguoiViet();
        
nguoiV.ho "Nguyen";
        
nguoiV.ten "Hung";
        
nguoiV.show();

        
tenNguoiNuocNgoai nguoiNN = new tenNguoiNuocNgoai();
        
nguoiNN.ho "Nguyen";
        
nguoiNN.ten "Hung";
        
nguoiNN.show();
    }
}
Ví d? 3: 
- L?p HocSinh g?m các thu?c tính: hoTen, lop, toan, ly, hoa và ph??ng th?c ?i?m trung bình là trung bình c?ng 3 môn
- L?p HocSinhChuyenToan k? th?a t? ph??ng th?c HocSinh, nh?ng khi tính ?i?m trung bình nhân ?ôi h? s? môn Toán r?i c?ng t?t c?, chia cho 4. Nh? v?y c?n ghi ?è ph??ng th?c ?i?m trung bình ? l?p HocSinhChuyenToan
Code:
PHP:
package javademoandroidvn;

class 
HocSinh {

    private 
String hoTen;
    private 
String lop;
    private 
float toanlyhoa;

    public 
String getHoTen() {
        return 
hoTen;
    }

    public 
void setHoTen(String hoTen) {
        
this.hoTen hoTen;
    }

    public 
String getLop() {
        return 
lop;
    }

    public 
void setLop(String lop) {
        
this.lop lop;
    }

    public 
float getToan() {
        return 
toan;
    }

    public 
void setToan(float toan) {
        
this.toan toan;
    }

    public 
float getLy() {
        return 
ly;
    }

    public 
void setLy(float ly) {
        
this.ly ly;
    }

    public 
float getHoa() {
        return 
hoa;
    }

    public 
void setHoa(float hoa) {
        
this.hoa hoa;
    }

    public 
float diemTrungBinh() {
        return (float) (
this.toan this.ly this.hoa) / 3;
    }
}

class 
HocSinhChuyenToan extends HocSinh {

    @
Override
    
public float diemTrungBinh() {
        return (float) (
this.getHoa() + this.getLy() + this.getToan() * 2) / 4;
    }
}

public class 
JavaDemoAndroidVn {

    public static 
void main(String[] args) {
        
HocSinh a = new HocSinh();
        
a.setHoTen("Vu Van Tuong");
        
a.setLop("At7a");
        
a.setToan(10.0f);
        
a.setLy(9.0f);
        
a.setHoa(8.0f);
        
System.out.println("Diem trung binh cua hoc sinh a la: " a.diemTrungBinh());

        
HocSinhChuyenToan b = new HocSinhChuyenToan();
        
b.setHoTen("Nguyen Van B");
        
b.setToan(9.0f);
        
b.setHoa(7.0f);
        
b.setLy(8.0f);
        
System.out.println("Diem trung binh cua hoc sinh chuyen Toan b la: " b.diemTrungBinh());

    }
}

Tham kh?o thêm 2 video bên blog StudyAndShare:




Ngu?n : Android.vn

Available link for download