-
10-12-2013, 08:04 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
thắc mắc về hàm truyền tham biến trong java
mình có thử ví dụ vs 5 Class A B C D G như sau:
Mã:public class A { public void show(){ System.out.println("A"); } }
Mã:public class B extends A{ public void show(){ System.out.println("B"); } }
Mã:public class C { public A obj; public A x; public C(){ x=new A(); obj= new B(); } }
Mã:public class D extends C{ public D(){ x= new B(); obj=new A(); } }
Mã:public class G { public static void get(C objC){ objC=new D(); } }
Mã:public class Program { public static void main(String[] args){ C y=new C(); G.get(y); y.x.show(); y.obj.show(); } }
Tức là đoạn lệnhMã:G.get(y);
View more random threads:
- [Xin giúp đỡ] Về việc đưa webservice lên mạng
- Hỏi về this.(tên biến) trong 1 class ??
- Danh sách liên kết trong java
- Lấy kết quả Xpath
- Vấn đề sử dụng PreparedStatement
- Cần giúp đỡ về hàm Nhập ngày/tháng/năm.
- coder nào xem hộ e bài tính tổng với nó báo lỗi hoài
- Chỉnh sửa các dòng trong file txt
- Giúp mình bài tập về lập trình hướng đối tượng với !
- Nhờ các anh chị -Nếu rãnh giúp e với đang cần :(
-
10-12-2013, 10:26 AM #2Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Truyền tham số vào phương thức nó sẽ tạo một con trỏ (tham chiếu) của phương thức trỏ vào đối tượng cần tham chiếu. Nên khi thay đổi giá trị của tham số ở con trỏ tại phương thức thì không làm thay đổi giá trị của con trỏ gốc.
http://www.javaworld.com/javaqa/2000...0526-pass.html
http://stackoverflow.com/questions/4...s-by-reference
http://www.programmerinterview.com/i...e-or-by-value/
Nói ngắn gọn thì khi truyền tham số nó sẽ truyền "bản sao" chứ không truyền "bản gốc", nên khi thay đổi "bản sao", "bản gốc" vẫn còn nguyên.
-
10-12-2013, 12:57 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
nhưng theo mình hiểu thì truyền đầu vào là những kiểu nguyên thủy thì mới là truyền tham trị và không ảnh hướng đến tham số gốc,còn ở đây hàm G là truyền vào một đối tượng nên mình nghĩ nó là tham chiếu và có thay đổi chứ?
nếu hàm G như trên ko đúng thì cụ thể phải viết thế nào để nó thay đổi đc?
p/s:
Nói ngắn gọn thì khi truyền tham số nó sẽ truyền "bản sao" chứ không truyền "bản gốc", nên khi thay đổi "bản sao", "bản gốc" vẫn còn nguyên.
public class G {
public static void get(C objC){
objC.x=new B();
}
}
lúc này thì in ra B,B,tức là đã có thay đổi của x trong "bản gốc" rồi mà
-
10-12-2013, 03:18 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
ai làm ơn giúp mình chút,mình đang cần hiểu rõ để làm bài tập
-
10-12-2013, 03:43 PM #5Administrator
- Ngày tham gia
- Feb 2014
- Bài viết
- 0
Bạn nên học cách đặt tên trước khi muốn làm cái gì với Java.
Code của bạn gây khó khăn cho người đọc.
-
10-12-2013, 03:48 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Wazi Armstrong
-
10-12-2013, 03:55 PM #7Silver member
- Ngày tham gia
- Sep 2015
- Đang ở
- Hà Nội
- Bài viết
- 0
Gửi bởi vandt
Để hiểu được nó thì bạn nên hiểu ngược về các ngôn ngữ bậc thấp.
Cách lưu trữ dữ liệu, các con trỏ, đối tượng/cấu trúc của đối tượng.
Các đối tượng thực sự thì nó bao gồm các con trỏ trỏ đến các đối tượng/giá trị nguyên thủy khác.
Xem 3 liên kết mà mình đưa. Có mấy cái hình minh họa dễ hiểu đấy.
-
10-12-2013, 04:15 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi SITUVNX
-
10-12-2013, 04:40 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Tĩnh (static) có nghĩa là địa chỉ con trỏ đó cố định từ khi ứng dụng chạy.
Cách bạn vừa nói là cách đầu mà mình làm để giải quyết vấn đề B trước A của bạn.
-
10-12-2013, 06:39 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi vandt
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...