Bổ trợ kiến thức Java cơ bản cho khóa học lập trình android (phần 6)

Trong những khái niệm cơ bản các bạn sẽ được tiếp thu ở những buổi đầu của khóa học lập trình Android thì khái niệm "Kế thừa" là khái niệm không thể bỏ qua.
Thế nào là sự kế thừa, quy tắc sử dụng sự kế thừa thế nào, hôm nay chúng ta cùng tìm hiểu nhé.

khóa học lập trình android - sự kế thừa


Sự kế thừa được sử dụng khi muốn tạo một lớp mới từ một lớp đã biết. Khi đó, tất cả các thuộc tính và phương thức của lớp cũ đều trở thành thuộc tính và phương thức của lớp mới. Lớp cũ được gọi là lớp cha, lớp mới được gọi là lớp con.Một lớp con (subclass) có thể kế thừa tất cả những vùng dữ liệu và phương thức của một lớp khác (siêu lớp – superclass).Như vậy việc tạo một lớp mới từ một lớp đã biết sao cho các thành phần (fields và methoads) của lớp cũ cũng sẽ thành các thành phần (fields và methods) của lớp mới. Khi đó ta gọi lớp mới là lớp dẫn xuất từ lớp cũ
Có thế lớp cũ cũng là lớp được dẫn xuất từ một lớp nào đấy, nhưng đối với lớp mới vừa tạo thì lớp cũ đó là một lớp siêu lớp trực tiếp.
Khi khai báo lớp kế thừa được thực hiện bởi từ khóa extends:
class A {
//…
}
class B extends A{
//…
}
Khi muốn thay đổi nội dung của phương thức được kế thừa từ lớp cha, chúng ta khai báo lại một phương thức mới có cùng tên và kiều với một phương thức đã có trong lớp cha.
Quy tắc truy nhập trong kế thừa:
Các quy tắc này quy định khả năng truy nhập của lớp con đối với các thuộc tính và phương thức của lớp cha:
Private: chỉ được truy câp trong phạm vi lớp cha, lớp con không truy nhập được. Tất cả các lớp ngoài lớp cha đều không truy nhập được.
Protected: lớp con có thể truy cập được. Tất cả các lớp không kế thừa từ lớp cha đều không truy nhập được.
Final: lớp con có thể sử dụng được nhưng không thể khai báo nạp chộng được.
Public: lớp con có thể sử dụng và nạp chồng được. Tất cả các lớp bên ngoài đều sử dụng được.
Chúng ta xét ví dụ sau đây:
Tạo 3 class gồm các thuộc tính tương ứng:
Class “nhân sự” gồm: họ tên, năm sinh, quê quán.
Class “học sinh” gồm: họ tên, năm sinh, quê quán, điểm trung bình.
Class “giáo viên” gồm: họ tên, năm sinh, quê quán, lương hàng tháng.
Như vậy, nếu như chúng ta không sử dụng tính kế thừa thì sẽ xảy ra tình trạng lặp code, nghĩa là khi khai báo 2 lớp “học sinh” và “giáo viên” sẽ khai báo lại các thuộc tính họ tên, năm sinh, quê quán
Để sử dụng tính kế thừa, ta chỉ cần khai báo lớp “nhân sự”, sau đó 2 lớp còn lại ta kế thừa từ lớp “nhân sự” , thiếu thuộc tính, phương thức nào thì sẽ bổ sung vào lớp đó.
Xem bài làm dưới đây:
a, Tạo các thuộc tính để public, và kế thừa: (Để thuộc tính public như này cho ngắn gọn, các bạn dễ hiểu trước)

package javademoandroidvn;
class NhanSu {
public String hoTen;
public int namSinh;
public String queQuan;
}
class HocSinh extends NhanSu{
public float diemTb;
}
class GiaoVien extends NhanSu{
public int luong;
}
public class JavaDemoAndroidVn {
public static void main(String[] args) {
NhanSu ns = new NhanSu();
ns.hoTen = “Nhân Sự A”;
ns.namSinh = 1990;
ns.queQuan = “Hải Dương”;
HocSinh hs = new HocSinh();
hs.hoTen = “Vũ Văn A”; // Đối tượng tạo ra từ lớp “học sinh” kế thừa, sử dụng các thuộc tính của lớp “nhân sự”
hs.namSinh = 1992;
hs.queQuan = “Hải Dương”;
hs.diemTb = 9.5f;
GiaoVien gv = new GiaoVien();
gv.hoTen = “Nguyễn Văn B”; // Đối tượng tạo ra từ lớp “giáo viên” kế thừa, sử dụng các thuộc tính của lớp “nhân sự”
gv.namSinh = 1980;
gv.queQuan = “Hà Nội”;
gv.luong = 300000000;
}
}

b, Tạo các thuộc tính để private, các phương thức cũng sẽ được kế thừa:

package javademoandroidvn;
class NhanSu {
private int namSinh;
private String queQuan;
private String hoTen;
public String getHoTen() {
return hoTen;
}
public void setHoTen(String hoTen) {
this.hoTen = hoTen;
}
public int getNamSinh() {
return namSinh;
}
public void setNamSinh(int namSinh) {
this.namSinh = namSinh;
}
public String getQueQuan() {
return queQuan;
}
public void setQueQuan(String queQuan) {
this.queQuan = queQuan;
}
}
class HocSinh extends NhanSu {
private float diemTb;
public float getDiemTb() {
return diemTb;
}
public void setDiemTb(float diemTb) {
this.diemTb = diemTb;
}
}
public class JavaDemoAndroidVn {
public static void main(String[] args) {
NhanSu ns = new NhanSu();
ns.setHoTen(“Nhân Sự A”);
ns.setNamSinh(1990);
ns.setQueQuan(“Hải Dương”);
HocSinh hs = new HocSinh();
hs.setHoTen(“Vũ Văn A”); // Đối tượng tạo ra từ lớp “học sinh” kế thừa, sử dụng các thuộc tính, phương thức của lớp “nhân sự”
hs.setNamSinh(1992);
hs.setQueQuan(“Hải Dương”);
hs.setDiemTb(9.5f);
System.out.println(“Thông tin học học sinh: “);
System.out.println(“Họ tên: ” + hs.getHoTen());
System.out.println(“Năm sinh: ” + hs.getNamSinh());
System.out.println(“Quê quán: ” + hs.getQueQuan());
System.out.println(“Điểm trung bình: ” + hs.getDiemTb());
}
}
Trên đây là những kiến thức cơ bản nhất về sự kế thừa chúng tôi xin giới thiệu đến các bạn. Với những kiến thức này, hi vọng các mem mới có thể nắm bắt được sơ lược tránh việc bỡ ngỡ khi bắt đầu học lập trình android.

0 nhận xét:

Copyright © 2013 ĐÀO TẠO LẬP TRÌNH TẠI HÀ NỘI and Blogger Templates - Anime OST.