Thắc mắc về phương thức abstract trong java?

Chào các anh chị, em đang học lập trình hướng đối tượng với java và có một thắc mắc về phương thức abstract như sau:
Em có class HDTheoNgay và class HDTheoGio kế thừa từ class HoaDon
Trong class HDTheoNgay có phương thức abstract tính tiền theo ngày là:

@Override
	public double ThanhTien() {
		if(soNgay>7)
			return 7 * donGia + (soNgay-7) * donGia * 0.8;
		else 
			return soNgay * donGia;
		// TODO Auto-generated method stub
	}

Trong class HDTheoGio có phương thức abstract tính tiền theo giờ là:

	@Override
	public double ThanhTien() {
		if(soGio<30)
			return soGio * donGia;
		else
			return soGio * donGia * 0.8; 
		// TODO Auto-generated method stub
	}

Trong hàm main em tạo 4 đối tượng mới. Vậy để so sánh Thành Tiền của 4 đối tượng này thì làm thế nào ạ?
Em dùng mảng động và so sánh thoe kiểu Collections.sort như thế này mà k được?

    public void SapXep() {
    	Collections.sort(list, new Comparator<HoaDon>() {   //list là tên mảng động, HoaDon là tên class cha
			@Override
			public int compare(HoaDon o1, HoaDon o2) { 
				// TODO Auto-generated method stub
				return 0; //Em đã truyền tham số o1.ThanhTien() vào rồi nhưng mà k được
			}
    		
    	});
    }

ai giúp em với :frowning:

t cũng không chắc nhưng thử thêm dòng
public int compare(HoaDon o1, HoaDon o2) {
o1.thanhtien()< o2.thanhtien return 1;
o1.thanhtien()>o2.thanhtien return -1;
return 0;
}

1 Like

Bài của bạn dùng Visitor Design Pattern, tách hoá đơn và công thức tính tiền.

1 Like

k được bạn ơi! :(((((((

thử vứt code t xem đc ko

1 Like

code cả bài hay code đoạn nào?

bạn gửi code cả bài t xem qua xem có giúp đc ko ?

1 Like

làm sao để gửi đây bạn

up lên driver rồi gửi link qua tn cho t cũng đc

1 Like

lúc nãy là do bạn thiếu if

lúc nãy viết vội mà :))

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