YOMEDIA
Bài giảng Lập trình hướng đối tượng - Chương 4 Kế thừa
Chia sẻ: Cvcxbv Cvcxbv
| Ngày:
| Loại File: PPT
| Số trang:30
113
lượt xem
11
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Nội dung cơ bản của chương 4 Kế thừa trong bài giảng Lập trình hướng đối tượng nhằm trình bày về vấn đề sử dụng lại, sử dụng lại bằng kế thừa, kế thừa trong java. Định nghĩa lớp kế thừa, kiểm soát truy cập.
AMBIENT/
Chủ đề:
Nội dung Text: Bài giảng Lập trình hướng đối tượng - Chương 4 Kế thừa
- Kế thừa
- Nội dung
Vấn đề sử dụng lại
Sử dụng lại bằng kế thừa
Kế thừa trong Java
địnhnghĩa lớp kế thừa
thêm phương thức, thuộc tính
kiểm soát truy cập
constructor
Kế thừa 2
- Tài liệu tham khảo
Thinking in Java, chapter 6
Java how to program, chapter 9
Kế thừa 3
- Sử dụng lại
Tồn tại nhiều loại đối tượng có các thuộc
tính và hành vi tương tự hoặc liên quan
đến nhau
Person, Student, Manager,…
Xuất hiện nhu cầu sử dụng lại các mã
nguồn đã viết
Sử dụng lại thông qua copy
Sử dụng lại thông qua quan hệ has_a
Sử dụng lại thông qua cơ chế “kế thừa”
Kế thừa 4
- Sử dụng lại
Copy mã nguồn
Tốn công, dễ nhầm
Khó sửa lỗi do tồn tại nhiều phiên bản
Quan hệ has_a
Sử dụng lớp cũ như là thành phần của lớp mới
Sử dụng lại cài đặt với giao diện mới
Phải viết lại giao diện
Chưa đủ mềm dẻo
Kế thừa 5
- Ví dụ: has_a
class Person {
private String name;
private Date birthday;
public String getName() { return name; }
...
}
class Employee {
private Person me;
private double salary;
public String getName() { return me.getName(); }
...
}
Kế thừa 6
- class Manager {
private Employee me;
private Employee assistant;
public setAssistant(Employee e) {...}
...
}
...
Manager junior = new Manager();
Manager senior = new Manager();
senior.setAssistant(junior); // error
Kế thừa 7
- Kế thừa
Dựa trên quan hệ is_a
Thừa hưởng lại các thuộc tính và phương
thức đã có
Chi tiết hóa cho phù hợp với mục đích sử
dụng mới
Thêm các thuộc tính mới
Thêm hoặc hiệu chỉnh các phương thức
Kế thừa 8
- Thuật ngữ
Kế thừa
Lớp cơ sở, lớp cha
Lớp dẫn xuất, lớp con
Kế thừa 9
- Kế thừa trong Java
[public] class DerivedClass extends BaseClass {
/* new features goes here */
}
Ví dụ:
class Employee extends Person {
private double salary;
public boolean setSalary(double sal) {
...
salary = sal;
return true;
}
}
Kế thừa 10
- Person Employee e = new Employee();
-name
-birthday e.setName("John");
+setName() e.setSalary(3.0);
+setBirthday()
Employee
-salary
+setSalary()
+getDetail()
Kế thừa 11
- private members
class Employee extends Person {
...
public String getDetail() {
String s;
// s = name + "," + birthday;
s = getName() + "," + getBirthday();
s += "," + salary;
return s;
}
}
Kế thừa 12
- Mức truy cập protected
Để đảm bảo che dấu thông tin, thông
thường các thuộc tính được khai báo là
private
Đốitượng thuộc lớp dẫn xuất phải truy cập tới
chúng thông qua các phương thức get và set.
Mức truy cập protected giải quyết vấn đề
này
Đối tượng của lớp dẫn xuất truy cập được các
protected members của lớp cơ sở
Các đối tượng khác không truy cập được
Kế thừa 13
- public class Person {
protected Date birthday;
protected String name;
...
}
public class Employee extends Person {
...
public String getDetail() {
String s;
s = name + "," + birthday;
s += "," + salary;
return s;
}
}
Kế thừa 14
- Các mức kiểm soát truy cập
Modifier Same Same Subclass Universe
class package
private Yes
package Yes Yes
(default)
protected Yes Yes Yes
public Yes Yes Yes Yes
Kế thừa 15
- Trong cùng gói public class Person {
Date birthday;
String name;
...
}
public class Employee extends Person {
...
public String getDetail() {
String s;
s = name + "," + birthday;
s += "," + salary;
return s;
}
}
Kế thừa 16
- package abc;
Khác gói public class Person {
protected Date birthday;
protected String name;
...
}
import abc.Person;
public class Employee extends Person {
...
public String getDetail() {
String s;
s = name + "," + birthday;
s += "," + salary;
return s;
}
}
Kế thừa 17
- Định nghĩa lại các phương thức
Chúng ta có thể định nghĩa lại các
phương thức của lớp cơ sở
Đối tượng của lớp dẫn xuất sẽ hoạt động
với phương thức mới phù hợp với nó
Có thể tái sử dụng phương thức cùng tên
của lớp cơ sở bằng từ khóa super
Kế thừa 18
- package abc;
Ví dụ public class Person {
protected Date birthday;
protected String name;
public String getDetail()
{...}
...
}
import abc;
public class Employee extends Person {
...
public String getDetail() {
String s;
s = super.getDetail() + "," + salary;
return s;
}
}
Kế thừa 19
- Định nghĩa lại phương thức
Phải có quyền truy cập không chặt hơn
phương thức được định nghĩa lại
Phải có kiểu giá trị trả lại như nhau
Kế thừa 20
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
ERROR:connection to 10.20.1.100:9315 failed (errno=111, msg=Connection refused)
Đang xử lý...