01/10/2018, 12:14

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
			}
    		
    	});
    }
Phan Vũ viết 14:20 ngày 01/10/2018

ai giúp em với

INfo viết 14:18 ngày 01/10/2018

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;
}

Hung viết 14:27 ngày 01/10/2018

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

Phan Vũ viết 14:29 ngày 01/10/2018

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

INfo viết 14:29 ngày 01/10/2018

thử vứt code t xem đc ko

Phan Vũ viết 14:22 ngày 01/10/2018

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

INfo viết 14:14 ngày 01/10/2018

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

Phan Vũ viết 14:22 ngày 01/10/2018

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

INfo viết 14:20 ngày 01/10/2018

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

Phan Vũ viết 14:30 ngày 01/10/2018

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

INfo viết 14:22 ngày 01/10/2018

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

Bài liên quan
0