Kế thừa và đa hình java
lượt xem 87
download
Polymorphism: nhiều hình thức, nhiều kiểu tồn tại: +đa hình trong lập trình +đa hình hàm: hàm trùng tên, phân biệt bởi danh sách tham số đa hình đối tượng nhìn nhận đối tượng theo nhiều kiểu khác nhau
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Kế thừa và đa hình java
- Kế thừa và đa hình
- Nội dung Đa hình upcasting liên kết động Lớp và phương thức trừu tượng Đa kế thừa và giao diện Một cách lập trình tổng quát Nguyễn Việt Hà Kế thừa và đa hình 2
- Tài liệu tham khảo Thinking in Java, chapter 7, 8 Java how to program, chapter 9 Nguyễn Việt Hà Kế thừa và đa hình 3
- Polymorphism (đa hình) là gì Polymorphism: nhiều hình thức, nhiều kiểu tồn tại Đa hình trong lập trình đa hình hàm: hàm trùng tên, phân biệt bởi danh sách tham số đa hình đối tượng nhìn nhận đối tượng theo nhiều kiểu khác nhau các đối tượng khác nhau giải nghĩa thông điệp theo cách thức khác nhau Nguyễn Việt Hà Kế thừa và đa hình 4
- 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 Nguyễn Việt Hà Kế thừa và đa hình 5
- Person Person p; -name Employee e = new Employee(); -birthday p = (Person) e; +setName() p.setName(...); +setBirthday() p.setSalary(...); // compile error Employee -salary +setSalary() +getDetail() Nguyễn Việt Hà Kế thừa và đa hình 6
- 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); Nguyễn Việt Hà Kế thừa và đa hình 7
- class Manager extends Employee { Employee assistant; ... public void setAssistant(Employee e) { assistant = e; } ... } ... Manager junior, senior; ... senior.setAssistant(junior); Nguyễn Việt Hà Kế thừa và đa hình 8
- Đ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()); Nguyễn Việt Hà Kế thừa và đa hình 9
- class EmployeeList { Employee list[]; ... public void add(Employee e) {...} public void print() { for (int i=0; i
- 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 Nguyễn Việt Hà Kế thừa và đa hình 11
- 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; Nguyễn Việt Hà Kế thừa và đa hình 12
- 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 {...} } Nguyễn Việt Hà Kế thừa và đa hình 13
- 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(); } } Nguyễn Việt Hà Kế thừa và đa hình 14
- Copy constructor(?) class Employee extends Person { double salary; Employee(Employee e) { super(e); salary = e.salary; } ... } Nguyễn Việt Hà Kế thừa và đa hình 15
- Gọi phương thức trong constructor class Shape { public Shape() { draw(); } public void draw() {} } class Point extends Shape { protected int x, y; public Point(int xx, int yy) { x = xx; y = yy; } public void draw() { System.out.println("(" + x + "," + y + ")"); } } -- Point p = new Point(10, 10); Nguyễn Việt Hà Kế thừa và đa hình 16
- Lớp trừu tượng Chúng ta có thể tạo ra các lớp cơ sở để tái sử dụng mà không muốn tạo ra đối tượng thực của lớp các lớp Point, Circle, Rectangle chung nhau khái niệm cùng là hình vẽ Shape Giải pháp là khái báo lớp trừu tượng không thể tạo đối tượng Nguyễn Việt Hà Kế thừa và đa hình 17
- abstract class Shape { protected int x, y; Shape(int _x, int _y) { x = _x; y = _y; } } ... Shape s1 = new Circle(); Shape s = new Shape(10, 10) // compile error Nguyễn Việt Hà Kế thừa và đa hình 18
- class Circle extends Shape { int r; public Circle(int _x, int _y, int _r) { super(_x, _y); r = _r; } ... } Nguyễn Việt Hà Kế thừa và đa hình 19
- Phương thức trừu tượng Để thống nhất giao diện, có thể khai báo các phương thức tại lớp cơ sở nhưng được cài đặt thực tế tại lớp dẫn xuất các lớp dẫn xuất khác nhau có cách cài đặt khác nhau Phương thức trừu tượng bắt buộc phải định nghĩa lại tại lớp dẫn xuất Nguyễn Việt Hà Kế thừa và đa hình 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình java cơ bản: Chương 8 - Lê Tân
30 p | 220 | 75
-
Lập trình về Java cơ bản
41 p | 136 | 51
-
Kế thừ và đa hình của java
40 p | 159 | 50
-
Bài giảng lập trình java - Bài 2
11 p | 148 | 40
-
Chương 17: Kế thừa form và tạo các lớp cơ sở
9 p | 415 | 31
-
Đề cương môn học Lập trình Java
28 p | 247 | 27
-
Ngôn ngữ lập trình hướng đối tượng
173 p | 147 | 20
-
Bài giảng Lập trình Java cơ bản: Chương 3 - GV. Võ Hoàng Phương Dung
55 p | 137 | 20
-
Bài giảng Lập trình nâng cao với Java
170 p | 99 | 14
-
Bài giảng môn Lập trình hướng đối tượng - Chương 4: Kế thừa và đa hình trên Java
42 p | 83 | 7
-
Bài giảng Ngôn ngữ lập trình Java: Chương 2 - TS. Phan Nguyên Hải
67 p | 12 | 6
-
Bài giảng Lập trình Java căn bản: Chương 3 - ThS. Võ Đức Cẩm Hải
61 p | 13 | 5
-
Bài giảng Ngôn ngữ lập trình Java: Giới thiệu về lớp và đối tượng trong java - TS. Nguyễn Thị Hiền
69 p | 68 | 4
-
Bài giảng Lập trình hướng đối tượng với Java - Chương 4: Tính kế thừa và đa hình
32 p | 60 | 4
-
Bài giảng Lập trình hướng đối tượng (Object Oriented Programming) - Chương 4: Kế thừa và đa hình trên Java
42 p | 55 | 3
-
Bài giảng Lập trình hướng đối tượng: Chương 4 - Châu Thị Bảo Hà
58 p | 91 | 3
-
Bài giảng Object-Oriented programming: Chương 0 - Văn Thị Thiên Trang
2 p | 75 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn