package baitap3;
public abstract class MatHang {
String Mamh;
private String Ten;
private double dongia;
public String getMamh(){
return Mamh;
}
public String getTen(){
return Ten;
}
public double getDongia(){
return dongia;
}
public void setDongia(double dongia){
this.dongia=dongia;
}
public void setMamh(String Mamh){
this.Mamh=Mamh;
}
public void setTen(String Ten){
this.Ten=Ten;
}
public MatHang() {}
public MatHang(String Mamh,String Ten,double dongia){
this.Mamh=Mamh;
this.Ten=Ten;
this.dongia=dongia;
}
public abstract void Nhap();
public abstract void HienThi();
}
package baitap3;
import java.math.BigDecimal;
import java.util.Scanner;
public class Tivi extends MatHang {
private String LoaiTV;
private int ManHinh;
static Scanner s= new Scanner(System.in);
public String getLoaiTV(){
return LoaiTV;
}
public int getManHinh(){
return ManHinh;
}
public void setLoaiTV(String LoaiTV){
this.LoaiTV=LoaiTV;
}
public void setManHinh(int ManHinh){
this.ManHinh=ManHinh;
}
public Tivi() { }
public Tivi(String LoaiTV,int ManHinh,String Mamh,String Ten,double dongia){
super(Mamh, Ten, dongia);
this.LoaiTV=LoaiTV;
this.ManHinh=ManHinh;
}
@Override
public void Nhap(){
System.out.print("Nhap ma mat hang:");
String Mamh=s.nextLine();
System.out.print("Nhap Ten:");
String Ten=s.nextLine();
System.out.print("Nhap don gia:");
double dongia=s.nextDouble();
s.nextLine();
System.out.print("Nhap loai tv:");
String LoaiTV =s.nextLine();
System.out.print("Nhap man hinh:");
int ManHinh =s.nextInt();
s.nextLine();
}
@Override
public void HienThi(){
System.out.println("Thông tin ti vi");
System.out.println("Mã mặt hàng: "+getMamh());
System.out.println("Tên: "+getTen());
System.out.println("đơn giá: "+getDongia());
System.out.println("loai ti vi:"+getLoaiTV());
System.out.println("màn hình: "+getManHinh());
}
public static void main(String[] args) {
Tivi t1= new Tivi();
t1.Nhap();
t1.HienThi();
}
}
Chạy hàm main, nhập vào thì được nhưng khi hiển thị ra giá trị null và 0
Hay lắm, lưu vào trường cục bộ, rồi bảo trường toàn cục không có giá trị.
các field trong method Nhap()
phải là biến instance đã tạo bên trên.
ghi như bác là tạo thêm các biến local không liên quan gì đến biến instance, nên giá trị mặc định của String là null, int là 0 thì đúng rồi.
phải sửa lại như này
vì class Tivi
kết thừa từ class MatHang
nên đoạn này phải sửa modifier từ private
thành protected
String Mamh; private String Ten; private double dongia;
protected String Mamh;
protected String Ten;
protected double dongia;
như này mới đúng !
thì mình làm đúng theo đề mà ? vấn đề là bác chưa hiểu biến local với biến instance
Sao thầy lại dạy đặt tên biến tiếng Việt thế kia, hỏng hết.
vâng em hiểu ý của bác nhưng thày để mấy biến đấy toàn ở private nên chúng em theo thầy. Và em cũng thử để protecred chạy được rồi nhưng cái khó là trong đề thầy bắt để là private
Và em cũng tham khảo trên mạng nhiều bài thấy các bài về lớp kế thừa , lớp ảo đều để protected nhưng thầy em toàn chơi khác người thôi .Em cung khổ lắm
Chắc thầy thương học sinh thôi bác ạ
- Chuyện đặt tên (lớp, trường, phương thức) Tiếng Việt thì du di (cho qua) cho bạn ấy, thầy bắt mà.
- Thầy yêu cầu để các trường là
private
là hoàn toàn đúng. Đó là lý do để tạo các phương thứcget - set
public
tương ứng. Đây là đảm bảo tính toàn vẹn của dữ liệu, tránh bị sửa đổi không mong muốn, kể cả với các lớp con kế thừa.
Vấn đề chính của câu hỏi/các câu trả lời, bạn hiểu chưa vậy?
Bạn sửa được chưa?
Em sửa được rồi các bác ạ