Kế thừa trong lập trình hướng đối tượng

Xin chào mọi người!

Em có 1 câu hỏi: Em có 1 lớp Hợp Đồng, 1 lớp Xe, 1 Lớp Nhân Viên. Trong Hợp Đồng có mã xe và mã nhân viên, vậy thì em phải extends 2 lớp Xe và Nhân Viên trong lớp Hợp đồng đúng không ạ?

Em cảm ơn !

1 Like

Sai :smiley: chỉ cần lưu tham chiếu đến hai đối tượng thôi.

3 Likes

Là ví dụ mã xe trong hợp đồng, mình khai báo là

Xe maxe;

đúng không ạ?

Ở đây em xài ngôn ngữ Java. Hình như bên java không có tham chiếu đến đối tượng đúng không ạ?

Các kiểu đối tượng trong Java mặc định là tham chiếu luôn rồi.

3 Likes

Để viết code kế thừa thì được nhưng xét về logic thì nó sai.
Một lớp con kế thừa từ lớp cha thì xét về logic nó cũng tương đồng ý nghĩa và mở rộng thông tin hoặc chức năng của lớp cha.

Ví dụ đàn ông và phụ nữ thì kế thừa từ lớp con người.
Chó mèo thì kế thừa được lớp động vật.
Nhưng người thì không kế thừa từ lớp chó được.
Hoặc Mèo thì không kế thừa từ lớp thực vật được.

5 Likes

Ồ. Vậy là trong lớp Hợp Đồng với mã xe, mã nhân viên em chỉ cần khai báo kiểu String là được ạ

Khai báo thẳng kiểu của đối tượng! Dùng chuỗi làm gì nữa???

3 Likes

Tại em hơi chậm tiêu nên chưa hiểu =))). Là giống cái ở dòng 2 là em khai báo là

Xe maXe;
NhanVien maNV;

đúng không ạ ? ^^

Đúng, cứ làm như vậy.

1 Like

Ô?
Mã là mã, xe là xe, tại sao Mã xe lại có kiểu Xe?

Rõ ràng mã xe, mã nhân viên phải là String.

Mình cũng chưa thấy có cái gì liên quan đến kế thừa trong 3 kiểu dữ liệu bạn nói đến cả.

6 Likes

Chuẩn. Mình cũng chưa hiểu đề bài của chủ thớt lắm. Hợp đồng có mã xe với mã nv thì cần 2 String là được mà. Sao phải tạo đối tượng làm gì.

2 Likes

Đã có lớp rồi, sao không tạo đối tượng mà phải dùng String?

4 Likes

Tại cái bài tập em là quản lí mua bán xe. Mà trong cái hợp đồng ấy có thuộc tính mã xe, mã nhân viên. Em đang vướng là không biết khai báo thuộc tính của 2 cái đó như thế nào?
Lúc đầu em khai báo 2 cái đó String, mà mấy thằng bạn em bảo vậy thì lớp Hợp Đồng không quan hệ gì tới 2 lớp kia. Em cũng không hiểu lắm.

-Cái đề nó đây ạ:

public string MaXe => xe.Ma;

:smiley:

5 Likes

Em cảm ơn anh @SITUVN.gcd đã chỉ em ạ :heart_eyes::heart_eyes: . Em làm theo anh và đã làm được rồi ạ ^^

Nói chung là ta không lưu đối tượng trong các kiểu dữ liệu dạng hoá đơn.

Bài tập của bạn là bài tập Quản lý. Giả sử bạn cần phải lưu dữ liệu, thế nguyên cái xe đó bạn định lưu trong hoá đơn kiểu gì? Khi bạn muốn tìm thông tin giao dịch mà bạn load cả cái xe lên?

Mã xe là mã xe, nếu bạn cần phải lấy được thông tin con xe thì có thể làm thế này

public Car getCar(){return CarManager.getCarById(this.getCarId())};
4 Likes

Dạ đúng đó anh, lúc load lên thì em phải get(mã trong hóa đơn).get(mã trong xe) thì nó mới lấy mã tương ứng. Chứ không nó load lên cả cái xe lên=))).Lưu trong hóa đơn thì trong class Xe em tạo thêm 1 cái

public Xe(String maXe){
         super();
         this.maXe=maXe;
}

Trong lúc thêm vào thì em gọi new cái đó trong constructor Hợp Đồng để lưu.Em giải thích hơi kém không biết nói vậy đúng k?

1 Like

Em làm được rồi nha mọi người :heart_eyes::heart_eyes: . Cảm ơn mọi người đã chỉ em :heart::heart::heart::orange_heart::orange_heart::yellow_heart::green_heart::green_heart:

2 Likes

sai bạn Xe là object còn maXe la 1 String nêu khai báo vậy sẻ báo lỗi cannot conver object to String .

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?