1. Trang chủ
  2. » Công Nghệ Thông Tin

Bắt đầu với lập trình Java phần 5 pptx

30 452 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 171,03 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 setSalaryd

Trang 1

Kế thừa

Trang 2

… thêm phương thức, thuộc tính

… kiểm soát truy cập

… constructor

Trang 3

Tài liệu tham khảo

„ Thinking in Java, chapter 6

„ Java how to program, chapter 9

Trang 4

Sử dụng lại

tính và hành vi tương tự hoặc liên quan

đến nhau

… Person, Student, Manager,…

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

Trang 5

… Sử dụng lại cài đặt với giao diện mới

Phải viết lại giao diện

Trang 6

Ví dụ: has_a

class Person {

private String name;

private Date bithday;

public String getName() { return name; }

}

class Employee {

private Person me;

private double salary;

public String getName() { return me.getName(); }

Trang 7

class Manager {

private Employee me;

private Employee assistant;

public setAssistant(Employee e) { }

}

Manager junior = new Manager();

Manager senior = new Manager();

senior.setAssistant(junior); // error

Trang 8

Kế thừa

thức đã có

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

Trang 9

Thuật ngữ

Trang 10

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) {

Trang 11

Employee e = new Employee();

e.setName("John");

e.setSalary(3.0);

Person-name

Trang 13

Mức truy cập protected

thường các thuộc tính được khai báo là

Trang 14

public class Person {

protected Date birthday;

protected String name;

Trang 15

Các mức kiểm soát truy cập

Yes Yes

Yes Yes

public

Yes Yes

Yes protected

Yes Yes

package

(default)

Yes private

Universe Subclass

Same package

Same class Modifier

Trang 16

Trong cùng gói public class Person {

Trang 17

Khác gói package abc; public class Person {

protected Date birthday;

protected String name;

Trang 18

Định nghĩa lại các phương thức

thức của lớp cơ sở

với phương thức mới phù hợp với nó

của lớp cơ sở bằng từ khóa super

Trang 19

Ví dụ

package abc;

public class Person {

protected Date birthday;

protected String name;

public String getDetail() { }

Trang 20

Định nghĩa lại phương thức

phương thức được định nghĩa lại

Trang 21

class Parent {

public void doSomething() {}

public int doSomething2() {

return 0;

}

}

class Child extends Parent {

protected void doSomething() {}

public void doSomething2() {}

}

Trang 22

Thừa kế nhiều tầng

Person -name

-birthday +setName +setBirthday

Employee -salary +setSalary +getDetail

Manager -rank

Programmer -project

Student -id

Mọi đối tượng đều

thừa kế từ lớp gốc Object

Trang 23

phương thức của lớp cơ sở

„ Không kế thừa phương thức khởi tạo

cơ sở

… sử dụng constructor mặc định

… gọi constructor của lớp cơ sở một cách tường

Trang 24

class Circle extends Point {

protected int radius;

public Circle() {}

}

Point p = new Point(10, 10);

Trang 25

Gọi constructor của lớp cơ sở

giao phó cho constructor của lớp cơ sở

constructor của lớp cơ sở

… Constructor của lớp cơ sở bắt buộc phải

được thực hiện đầu tiên

… Nếu lớp cơ sở không có constructor mặc định thì bắt buộc phải gọi constructor tường minh

Trang 26

class Circle extends Point {

protected int radius;

public Circle() {}

public Circle(int xx, int yy, int r) {

super(xx, yy);

radius = r;

Trang 27

class Circle extends Point {

protected int radius;

public Circle() { super(0, 0); }

public Circle(int xx, int yy, int r) {

super(xx, yy);

radius = r;

}

Trang 28

class Circle extends Point {

protected int radius;

public Circle() { }

public Circle(int xx, int yy, int r) {

// super(xx, yy);

radius = r;

Trang 29

class Circle extends Point {

protected int radius;

Ngày đăng: 22/07/2014, 16:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w