Khác nhau giữa class cha thông thường và class cha abstract trong OOP

oop

(An Thanh) #1

Em đang thắc mắc về sự khác nhau trong kế thừa.
Khi class con kế thừa class cha thông thường và class cha là abstract .
Anh(chị) nào biết giải thích hộ em.


(Trần Hoàn) #2

Class abstract thì không thể tạo instance, trừ khi trong khai báo khởi tạo đồng thời định nghĩa tất cá các phương thức abstract, mà cái đó để sau.

Kế thừa
abstract class SuperClass
{
    ...
}

SuperClass x = new SuperClass();//Lỗi

///
///
class ExtendedClass extends SuperClass
{
    ...
}

SuperClass y = new ExtendedClass();//Được

Ngoài ra nếu class cha có phương thức abtract, class con không phải là class abtract thì class con phải định nghĩa tất cả các phương thức abtract của class cha mà chưa được định nghĩa.

Đa hình
public abstract class ClassÔngNội
{
    public ClassÔngNội(int ongNoiParam)
    {
        ...
    }
    
    public abstract void aMethod();
}

public abstract class ClassBố extends ClassÔngNội
{
    
    public ClassBố(int boParam)
    {
        super(boParam);
        ...
    }
    
    public abstract void anotherMethod(String boParam);
}

public class ClassCon extends ClassBố
{
    public ClassCon()
    {
        super(10);
        ...
    }
    
    @Override
    public void aMethod()
    {
        ...
    }
    
    @Override
    public void anotherMethod(String conParam)
    {
        ...
    }
}

Không rõ bạn dùng ngôn ngữ gì nên mình dùng Java cho nó sáng sủa.


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?