Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    - Thứ nhất, nếu một lớp mà chứa abstract method thì bản thân nó phải là abstract class, vì thế trong ví dụ trên của bạn, class A bắt buộc phải có từ khóa abstract.
    Điều này bạn có thể đọc lại ở đây:

    Mã:
    http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
    - Cũng trong link tài liệu trên thì bạn không thể tạo thể hiện của một abstract class. Abstract class thường dùng để tạo ra khuôn mẫu cho một kiểu đối tượng nào đó, và khi một lớp con kế thừa từ nó, bắt buộc lớp con phải cài đặt các abstract method của lớp cha thì mới có thể tạo thể hiện được, còn không thì nó lại là một abstract class

    Mình có ý kiến như vậy, có gì sai xót mong mọi người chỉ giáo thêm!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Abstract class khác với class thường ở chổ nào

    Ai giải đáp mình thắc mắc này với, search trên mạng nhiều chỗ mà mình không hiểu rỏ vấn đề này lắm, mình hiểu sơ sơ về cách dùng, nhưng những gì abstract class làm được thì class thường vẫn làm được mà... vd

    Mã nguồn PHP:
    public class ClassA { abstract void print(); // void print() { } } public class ClassB extends ClassA { void print() { System.out.print("Class B"); } }  
    Trong hàm main
    Mã nguồn PHP:
    ClassA myClass = new ClassB(); myClass.print() // In ra ClassB  
    Nếu ta bỏ abstract đi và thay bằng hàm print bình thường (hàm print trống như bên dưới) thì kết quả vẫn in ra là ClassB
    Giả sử mình có một đống class (khoảng 5 class đi) kế thừa từ classA và chỉ có 3 class là sử dụng hàm print với mục đích khác thôi, còn lại là print trống thì mình để abstract lại phải implement rồi bỏ trống, vậy còn cực hơn là không abstract nữa

    Nếu so sánh virtual bên C++ thì virtual rõ ràng hơn chỗ này mà:
    Giả sử định nghĩa như trên nhưng ta thay abstract bằng virtual, và print trong ClassA in ra là ClassA thì khi đó:
    Mã nguồn PHP:
    ClassA *myClass = new ClassB(); myClass->print(); // In ra ClassB  
    Nhưng nếu ta bỏ virtual thì:
    Mã nguồn PHP:
    ClassA *myClass = new ClassB(); myClass->print(); // In ra ClassA  
    Có điểm khác biệt giữa virtual và không virtual, nhưng bên Java lại không khác khi không có abstract và không abstract [IMG]images/smilies/smile.png[/IMG]

    Ngồi nghĩ quài hông biết hai cái này khác nhau chỗ nào thế là mình tự nghĩ rằng:
    Chỉ để làm chuẩn thiết kế trong lập trình, cho người phát triễn sau dễ dàng code hơn thôi
    (Có sai chỗ nào mọi người chỉ giùm mình nha [IMG]images/smilies/smile.png[/IMG] ... Thanks)

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    When to use abstract class and interface in Java

    Here are some guidelines on when to use an abstract class and interface in Java:

    1: An abstract class is good if you think you will plan on using inheritance since it provides a common base class implementation to derived classes.
    2: An abstract class is also good if you want to be able to declare non-public members. In an interface, all methods must be public.
    3: If you think you will need to add methods in the future, then an abstract class is a better choice. Because if you add new method headings to an interface, then all of the classes that already implement that interface will have to be changed to implement the new methods. That can be quite a hassle.
    4: Interfaces are a good choice when you think that the API will not change for a while.
    5: Interfaces are also good when you want to have something similar to multiple inheritance, since you can implement multiple interfaces.


    Link : http://www.programmerinterview.com/i...bstract-class/

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cứ nghĩ nó là 1 gì đó trong cuộc sống đi , đừng cứng nhắt theo mớ lý thuyết .

    p/s : làm java thì pải biết callback rồi :d

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •