Lớp trừu tượng trong java

đề bài là class sinhvienbiz kế thừa class Student ,
SinhVienBiz gồm các thuộc tính điểm toán văn anh. Ghi đè phương thức
getDiem() để tính điểm cho sinh viên Biz theo công thức (toán + văn + anh)/3
vậy phương thức getdiem phải trả về kiểu float mà trong khi đó getdiem tại class studen là kiểu int, giờ bên class sinhvienbizz phải làm như nào để phương thức getdiem trả về kiểu float nhỉ mn, mình mới học tới đây nên chưa biết cách làm

Trong Student

public abstract float ghiDiem();

Trong SinhVienBiz

@Override
public float ghiDiem(){
	return (toan + van + anh) / 3.0;
}

bro ơi ko được phép sửa bên trong class student :v nếu không mình đã không khổ sở như này

Vậy thì bác dùng thêm overload trong class sinhvienbizz, khi một trong các args truyền vào là float thì class sẽ chạy hàm có kiểu trả về là float

kiểu primitive khi override không thể chuyển kiểu như kiểu reference được , còn làm theo cách overloading thì coi như không dùng được tính đa hình …

Bác cho em.hỏi sao overload mà lại k dùng được đa hình ạ ??

thực ra overloading có nghĩa là Compile time Polymorphism (or Static polymorphism) đa hình tĩnh , nhưng trong lý thuyết OOP khi nói về đa hình thì người ta muốn nói đến Runtime Polymorphism (or Dynamic polymorphism) , vì vậy overload trong java có thể coi là 1 feature thôi … hix đã từng đọc đâu đó nói về cái này rồi nhưng quên mất …@@

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