30/09/2018, 18:48
nguyên tắc hoạt động của hàm toString() trong java
public class SinhVien_Program {
public static void main(String[] args) throws Exception {
SinhVien sv1 = new SinhVien(1, "Nguyen van Teo", 5, 6);
SinhVien sv2 = new SinhVien(2,"Tran van Ti", 6,7);
SinhVien sv3 = new SinhVien();
sv3.nhap(); //Hàm nhap() ở trong class SinhVien
System.out.println(SinhVien.tienDe());
//System.out.println(sv1 + sv2 + sv3); //báo lỗi ở chỗ sv1 và sv2 (1)
System.out.println(sv1.toString() + sv2.toString() + sv3); //ok (2)
}
}
(1)
Tại sao nó lại báo lỗi ở chỗ sv1 và sv2 còn sv3 thì không?
(2)
Đã sửa lỗi được nhưng em không hiểu tại sao sv1 và sv2 phải .toString()
còn sv3 thì không cần
Bài liên quan
Mọi class trong java được tạo ra mặc định kế thừa class Object.
sv3 sử dụng super.toString(), còn sv1 và sv2 sử dụng SinhVien.toString().
Nên class SinhVien cần viết lại method toString().
Nó báo lỗi gì vậy bạn?
nè anh @CuongNguyen
Theo mình thì vấn đề ở đây không phải là hàm toString() nhé.
Ví dụ: Biểu thức “ABC” + sv1 sẽ thành “ABC” + sv1.toString()
-> đó là sại tao không báo lỗi ở s3
Trong trường hợp của bạn:
System.out.println(sv1 + sv2 + sv3); -> lỗi vì sv1 + sv2 là Object + Object
System.out.println("" + sv1 + sv2 + sv3); -> không lỗi
vì thứ tự sẽ như sau: (("" + sv1) + sv2) + sv3: mỗi lân + đều là String + Object