Cách mở khóa 1 biến dựa vào giá trị của biến khác trong Java

Mình có 1 class tên là “Nuoc” với 3 biến lần lượt là: “loaiNuoc”, “huongVi”“Gia”. Sẽ có 2 loại nước là “Nước lọc”“Nước ngọt”. Không biết có kỹ thuật nào mà biến “huongVi” chỉ xuất hiện khi “loaiNuoc” được set là “Nước ngọt” không hay mình phải để 3 biến luôn (khi “loaiNuoc” là nước là “Nước lọc” thì set “huongVi” = null). Nếu có mong mọi người cho mình xin tên kỹ thuật ấy để tìm hiểu, nếu có bạn nào giải thích thì mình rất cảm tạ. Ngoài ra, giá sẽ thay đổi tùy vào mỗi loại nước, nếu mình muốn làm nó hoàn toàn tự động khi tạo 1 đối tượng mới và nhập loại nước thì mình chỉ cần dùng hàm set phải ko ? Hay phải viết thêm hàm khác và gọi mỗi khi thêm 1 đối tượng mới ?

Vấn đề 1 mình đã nghĩ ra cách là dùng kế thừa. Còn cách tự động gán giá trị dựa trên giá trị khác thì không biết làm cách nào. Mong mọi người giúp đỡ

Bạn sử dụng constructor và setter nhé:

class Nuoc
{
	private String loaiNuoc;
	private String huongVi;
	private Object gia;
	public Nuoc(String loaiNuoc)
	{
		this.loaiNuoc = loaiNuoc;
		switch(loaiNuoc)
		{
			case "Nước ngọt":
				this.huongVi = "Ngọt";
				break;
			case "Nước lọc":
				this.huongVi = null;//Thực ra cũng không cần vì mặc định là null rồi
				break;
		}
	}
	public void setLoaiNuoc (String loaiNuoc)
	{
		this.loaiNuoc = loaiNuoc;
		switch(loaiNuoc)
		{
			case "Nước ngọt":
				this.huongVi = "Ngọt";
				break;
			case "Nước lọc":
				this.huongVi = null;//Thực ra cũng không cần vì mặc định là null rồi
				break;
		}
	}	
}
2 Likes

Hoặc một cách bựa hơn là dùng getter hoặc method :smile:

public String getHuongVi()
{
	switch(this.loaiNuoc)
	{
		case "Nước ngọt":
			return "Ngọt";
		case "Nước lọc":
			return null;
	}
}
4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?