Hỏi Về ép Kiểu Trong Java - Programming - Dạy Nhau Học Trang chủ » ép Kiểu Class Trong Java » Hỏi Về ép Kiểu Trong Java - Programming - Dạy Nhau Học Có thể bạn quan tâm ép Kiểu Con Trỏ ép Kiểu Con Trỏ C ép Kiểu Con Trỏ Trong C ép Kiểu Con Trỏ Void ép Kiểu Datetime Trong C# Hỏi về ép kiểu trong java programming java Chien_Minh_Nguyen (Chiến Minh Nguyễn) March 31, 2018, 9:01am #1 Mọi người có thế giải thích cho e biết việc ép kiểu trong java thực hiện như thế nào được không ạ. ví dụ như đoạn code này import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main(String arg [] ) { Person p = new Person(); Employee e = new Employee(); Manager m = new Manager(); Person pArr[] = {p, e, m}; for (int i=0; i< pArr.length; i++){ System.out.println(pArr[i].getDetail()); } } } class Person { public String getDetail(){ return "Person"; } } class Employee extends Person{ @Override public String getDetail(){ return "Employee"; } } class Manager extends Employee{ @Override public String getDetail(){ return "Manager"; } } kết quả ra là: Person Employee Manager e nghĩ là khi 3 thằng kia đã bị ép kiểu thành Person rồi thì khi gọi phương thức getDetail thì nó phải gọi của class Person chứ nhỉ. Mong mọi người giải thích hộ e, nếu có thể có thế giải thích luôn quá trình java làm việc khi gặp trường hợp như thế này luôn được k ạ. 1 Like yuh (Huy) August 5, 2016, 4:08am #2 extends là ép kiểu à? Tài liệu nào viết vậy? truongphamit (Truong Pham) August 5, 2016, 4:14am #3 Có thấy chỗ nào casting đâu nhỉ? Chien_Minh_Nguyen (Chiến Minh Nguyễn) August 5, 2016, 4:39am #4 Chien_Minh_Nguyen: Person pArr[] = {p, e, m}; trong đoạn này e và m đều bị ép lên Person mà. nếu sai mong mọi người sửa cho qloved (Quân) August 5, 2016, 5:07am #5 trước khi hỏi 1 câu ngớ ngẩn thì hãy đọc kĩ và nghiên cứu lại 4 tính chất của OOP trong java bạn sẽ có câu trả lời 2 Likes Chien_Minh_Nguyen (Chiến Minh Nguyễn) August 5, 2016, 5:21am #6 ok. cám ơn bạn. mình sẽ tìm hiểu 4 tính chất này. mình mới học java và hướng đối tượng nên k biết. nếu mình thông minh như bạn chắc không phải hỏi ai rùi qloved (Quân) August 5, 2016, 5:34am #7 Thế nên mới nói là ngớ ngẩn, bạn học chưa sâu nhưng lại muốn đi nhanh thì vấp thôi 2 Likes Chien_Minh_Nguyen (Chiến Minh Nguyễn) August 5, 2016, 6:10am #8 okey. mình đã tìm hiểu sơ sơ về cái đa hình này rùi tiện thể bạn có thể chỉ mình luôn java làm như thế nào khi chạy đoạn code trên được không Ben_Nguyen (Ben Nguyen) August 7, 2016, 4:54am #9 Bạn thắc mắc chính xác mà. Đây được gọi là cơ chế Upcasting , Khi mà sự thể hiện của lớp cha được tạo thông qua đối tượng của lớp con. Trong trường hợp của bạn thì cấu trúc kế thừa theo kiểu multilevel. Trường hợp khởi tạo đối tương như trên, thì đối tượng của lớp cha được phép truy xuất các thuộc tính và phương thức được khai báo trong lớp chính nó và phương thức được overidde ở lớp con. Trong trường hợp của bạn, ví dụ lớp Manager không overrdie phương thức getDetail() của lớp Employee thì khi mà đối tượng lớp cha (Person)được tạo qua sự thể hiện của lớp Manager( Person p = new Maneger() ) khi mà nó truy xuất vào phương getDetail() , thì phương thức getDetail() được truy xuất sẽ là phương thức override gần nhất đối với lớp Manager, trong trường hợp trên là phương thức getDetail() của lớp Employee. 2 Likes Chien_Minh_Nguyen (Chiến Minh Nguyễn) August 21, 2016, 4:55am #10 Cám ơn anh đã trả lời cái câu hỏi này là e hỏi khi chưa đọc về đa hình trong hướng đối tượng. Trước lập trình C thì thấy kiểu long bị ép kiểu về int thì biến trở thành int luôn nên tưởng bên đối tượng giống thế! Nhưng giờ biết về đa hình rùi thì hiểu rằng khi tạo đối tượng bằng từ khóa new thì bản chất đối tượng là đối tượng thuộc class sau từ khóa new. Việc upcasting chỉ là việc nhìn đối tượng như một cha của nó còn bản chất đối tượng không thay đổi. ví dụ như Manager và Employee đều là Person. vì vậy khi gọi getDetail() thì tùy theo đối tượng nào thì thì sẽ thực hiện phương thức getDetail() của đối tượng đó. Không biết e hiểu thế đúng không? 2 Likes Ben_Nguyen (Ben Nguyen) August 21, 2016, 8:02am #11 Bạn xem đường link này. Hi vọng bạn sẽ clear được nó. http://www.javatpoint.com/runtime-polymorphism-in-java 1 Like Ben_Nguyen (Ben Nguyen) August 21, 2016, 8:16am #12 Nếu có vấn đề nào không hiểu, bạn cứ đề cập, hi vọng mình có thể sáng tỏ nó giúp bạn. 2 Likes Chien_Minh_Nguyen (Chiến Minh Nguyễn) August 31, 2016, 3:12pm #13 Cám ơn anh à ptgiang56 (Giang Phan) April 8, 2018, 12:27pm #15 Cái này gọi là cơ chế Upcasting và downcasting trong Java: Cơ chế Upcasting và Downcasting trong java - GP Coder (Lập trình Java) Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI. Bạn muốn biết cách thức hoạt động của nó thì xem lại tính đa hình trong Java: Tính đa hình (Polymorphism) trong Java - GP Coder (Lập trình Java) Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI. WatsonGeorge (WatsonGeorge) July 15, 2021, 10:56am #16 You can refer to the article on polymorphism in java. FlowerBrackets - code here Welcome to flowerbrackets blog. Do you want to learn java, java programming and java programs? Follow our flowerbrackets blog to learn more. In flowerbrackets blog we discuss on java programming, java programs, java and many more. 1 Like DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » ép Kiểu Class Trong Java Java Bài 31: Ép Kiểu Trong OOP - YellowCode.Books Ép Kiểu Đối Tượng Trong JAVA - Trung Tâm JAVA. Ép Kiểu Trong Java | How Kteam Ép Kiểu Trong Java - Giải Mã Thông Tin Về Java Type Conversion Ép Kiểu Trong Java - Học Lập Trình Java - CodeGym Ép Kiểu Trong Java - Học Java Miễn Phí Hay Nhất - VietTuts Ép Kiểu Dữ Liệu Trong Java Tự Học Java | Ép Kiểu(Casting) Trong Java » Chuyển Kiểu, ép Kiểu Trong Java Ép Kiểu Trong Java - Deft Blog Ép Kiểu Trong Java - TEK4 Ép Kiểu Trong Java Ép Kiểu Dữ Liệu Trong Java - Lập Trình Từ Đầu Ép Kiểu Trong Java (Type Casting) - VietMX's Blog