Khởi tạo đối tượng trong java
Mọi người cho em hỏi cách hiểu của mọi người về khởi tạo đối tượng trong java với ạ. Theo em thì cách khởi tạo là: kiểu dữ liệu tên đối tượng = new Constructor:
kiểu dữ liệu Có thể là tên lớp hoặc tên interface mà lớp chứa constructor implement, kiểu dữ liệu tham chiếu đối tượng( vd: String, Array, etc)
constructor chỉ có thể là tên lớp, nó là phương thức đặc biệt của lớp chứa nó.
VD:
NewClass extend MainClass
MainClass d = new NewClass(id)
d.hamMainClass(); // Hàm này thuộc MainClass thì vẫn dùng bình thường
d.getId(); // Hàm này thuộc NewClass thì không dùng được. Chương trình báo lỗi
Vậy cái phần NewClass(id) có tác dụng gì ạ. Đối tượng d lại không dùng được các phương thức trong lớp NewClass
Bạn có thể show hết MainClass và NewClass lên được không ?
Mình nghĩ cú pháp chỉ là thứ hiện thực hóa suy nghĩ của mình thôi
vd: con thừa hưởng những đặc điểm hành vi từ bố thì những hành vi con có chắc gì bố đã có đấy => mơ hồ => sai lầm
public class NewClass extends MainClass{
private int id;
}
class MainClass {
}
Hi At Phong.
P/S https://kipalog.com/posts/4-tinh-chat-dac-thu-cua-lap-trinh-huong-doi-tuong
Thanksssssssssss bro
Nếu bạn khai báo như sau
Chương trình sẽ hiểu
x
có kiểu dữ liệuA
, vì vậy không có phương thứcb()
. Để sử dụng phương thức đó, bạn phải castTuy nhiên nếu như có class
C
cũng kế thừaA
vàC
thì có phương thứcc()
.Bạn có thể cast như sau:
Compiler sẽ không báo lỗi, chương trình vẫn được biên dịch bình thường, nhưng khi thực thi đến dòng đó thì chương trình sẽ bị crash, debugger sẽ quăng exception vì
x
có kiểu dữ liệuB
nên không thể cast thànhC
. Thế nên trước khi cast phải biết chắc chắn mình đang làm việc với kiểu dữ liệu nào, hoặc tống hết vào try-catch cho chắc ăn.