Mình tạo một Blueprint class Cat với các thuộc tính và các phương thức khởi tạo như sau:
indent preformatted text by 4 spacespackage test.java;
public class Cat {
private String name;
private String size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
//constructor có đối số
public Cat(String name, String size) {
super();
this.name = name;
this.size = size;
}
// constructor không đối sô
public Cat(){
super();
}
}
Kế đến trong hàm main mình có thực hiện các dòng code:
indent preformatted text by 4 spaces
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat cat;
Cat myCat = null;
Cat herCat = new Cat("Kitty", "Big");
Cat hisCat = new Cat();
myCat.setName("Java");
myCat.setSize("SuperBig");
}
}
Điều gì xảy ra tại các ô nhớ khi các câu lệnh này được thực thi vậy? Mn xem giúp mình mình tư duy như này đúng chưa ạ?
Cat cat; -> tạo một biến đối tượng kiểu Cat và tham chỉ tay tới ô nhớ null
Cat myCat = null; -> tương tự
Cat herCat =new Cat("Kitty","Big");-> Tạo đối tượng có “Kitty” “Big” ở 1 vùng nhớ sau đó tạo biến đối tượng herCat chỉ tới đối tượng này
Cat hisCat = new Cat();-> tạo đối tượng trống cũng ở 1 vùng nhớ sau đó tạo biến đối tượng hisCat trỏ tới ô nhớ này
myCat.setName("Java");
myCat.setSize("SuperBig");
-> biến đối tượng myCat có 2 thuộc tính name và size vẫn đang trỏ tới ô nhớ nó trỏ lúc được khởi tạo. Sau đó nhét ‘Java’ vào ô name, nhét “Super Big” vào ô nhớ size
Như vậy có hợp lý không ạ? xin mn cho ý kiến

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