Chủ Nhật, 2 tháng 3, 2014

Tài liệu Kế thừ và đa hình của java ppt

Kế thừa và đa hình
5
NguyễnViệtHà
Up casting
 Up casting là khả năng nhìn nhận đối
tượng thuộc lớp dẫn xuất như là một đối
tượng thuộc lớp cơ sở
 dùng đối tượng của lớp dẫn xuất để truyền
tham số
 dùng đối tượng của lớp dẫn xuất làm thuộc
tính
Kế thừa và đa hình
6
NguyễnViệtHà
Person p;
Employee e = new Employee();
p = (Person) e;
p.setName( );
p.setSalary( ); // compile error
Person
-name
-birthday
+setName()
+setBirthday()
Employee
-salary
+setSalary()
+getDetail()
Kế thừa và đa hình
7
NguyễnViệtHà
String teamInfo(Person p1, Person p2) {
return "Leader: " + p1.getName() +
"; member: " + p2.getName();
}

Employee e1, e2;
Manager m1, m2;

System.out.println(teamInfo(e1, e2));
teamInfo(m1, m2); teamInfo(m1,e2);
Kế thừa và đa hình
8
NguyễnViệtHà
class Manager extends Employee {
Employee assistant;

public void setAssistant(Employee e) {
assistant = e;
}

}

Manager junior, senior;

senior.setAssistant(junior);
Kế thừa và đa hình
9
NguyễnViệtHà
Đa hình và liên kết động
 Khả năng giải nghĩa các thông điệp theo các cách thức
khác nhau
Person p1 = new Person();
Person p2 = new Employee();
Person p3 = new Manager();

System.out.println(p1.getDetail());
System.out.println(p2.getDetail());
System.out.println(p3.getDetail());
Kế thừa và đa hình
10
NguyễnViệtHà
class EmployeeList {
Employee list[];

public void add(Employee e) { }
public void print() {
for (int i=0; i<list.length; i++) {
System.out.println(list[i].getDetail());

}

EmployeeList list = new EmployeeList();
Employee e1; Manager m1;

list.add(e1); list.add(m1);
list.print();
Kế thừa và đa hình
11
NguyễnViệtHà
Liên kết tĩnh và liên kết động
Static and dynamic binding
 Liên kết tĩnh: lời gọi hàm (phương thức) được
quyết định khi biên dịch, do đóchỉ có một phiên
bản của chương trình con được thực hiện
 ưu điểm về tốc độ
 Liên kết động: lời gọi phương thức được quyết
định khi thực hiện, phiên bản của phương thức
phù hợp với đối tượng được gọi
 Java mặc định sử dụng liên kết động
Kế thừa và đa hình
12
NguyễnViệtHà
Down casting
Employee e = new Employee();
Person p = e; // up casting
Employee ee = (Employee)p; // down casting
Manager m = (Manager)ee; // run-time error
Person p2 = new Manager();
Employee e2 = (Employee) p2;
Kế thừa và đa hình
13
NguyễnViệtHà
Toán tử instanceof
public class Employee extends Person {}
public class Student extends Person {}

public doSomthing(Person e) {
if (e instanceof Employee) {
} else if (e instanceof Student) {
} else { }
}
Kế thừa và đa hình
14
NguyễnViệtHà
Private method
class Base {
private void f() { System.out.println(”base f()”); }
public void show() { f() }
}
public class Derived extends Base {
private void f() {
System.out.println(”derived f()”);
}
public static void main(String args[]) {
Derived d = new Derived();
Base b = d;
b.show();
}
}

Không có nhận xét nào:

Đăng nhận xét