-
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:
- Ý nghĩa của hàm nextInt(n) trong class Random
- HỌC LÂP TRÌNH JAVA CĂN BẢN MIỂN PHÍ TẠI BEETECH 127 Quan Hoa, Cầu Giấy, Hà Nội
- giúp đỡ dùm em bài tập về chuỗi trong java
- mọi người có thể giải thích giúp mình 2 bài tạo tam giác này không ạ
- Lỗi khóa chính khi insert trong java Swing
- em làm sai ở đâu ạ
- các pro ơi giúp mình bài này với
- Lỗi thao tác với cơ sở dữ liệu
- Sự khác nhau giữa Frame và JFrame
- bác nào xem hộ e lệnh nhập xuất vơi
-
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
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...