2016-04-12 38 views
0

Nesnenin beygir gücü alanındaki (hp) kilowatt (kW) değerindeki gücü dönüştüren car nesnesinde basit bir yönteme sahibim. kod şudur:Nesne türünde bir yöntem nasıl yüklenir

MAP MEMBER FUNCTION engine_power 
RETURN FLOAT IS 
    v_kw FLOAT := 0.745699872; 
BEGIN 
    RETURN hp * v_kw; 
END; 

Şimdi gücünü hesaplamak için bu yöntemi aşırı istiyorum, ama sonuç INTEGER yerine FLOAT olacaktır.

Nesnenin gövdesindeki yöntemin aşırı yüklenmesi sözdizimi nedir?

cevap

1

Yalnızca one MAP method numaralarına sahip olabilirsiniz, ancak tamsayı ile başka bir yöntem ekleyebilirsiniz.

create type my_object as object (hp number, 
    MAP MEMBER FUNCTION engine_power RETURN FLOAT, 
    MEMBER FUNCTION engine_power RETURN INTEGER 
); 
/

Type MY_OBJECT compiled 

create type body my_object as 
    MAP MEMBER FUNCTION engine_power 
    RETURN FLOAT IS 
    v_kw FLOAT := 0.745699872; 
    BEGIN 
    RETURN hp * v_kw; 
    END; 

    MEMBER FUNCTION engine_power 
    RETURN INTEGER IS 
    v_kw FLOAT := 0.745699872; 
    BEGIN 
    RETURN TRUNC(hp * v_kw); 
    END; 
end; 
/

Type body MY_OBJECT compiled 

ben gerçekten ya bir MAP yöntemi olmak istediğimden emin değilim, ama yöntemleri kullanarak nasıl olduğunu değişir: Hem tip ve tip vücut tablolara eklemeniz gerekir.

+0

Dokümantasyona göre, üye yöntemleri aşırı yüklenebilir. http://docs.oracle.com/cd/B28359_01/appdev.111/b28371/adobjbas.htm#i471260 – mathguy

+0

Aşırı yüklenme yöntemini gösterdim. İki MAP yöntemine sahip olamayacağınızı söyledim, aşırı yükleme yöntemini kullanamazsınız değil mi? MAP olmasa da iyi olur, ancak OP'nin başka bir nedenden dolayı buna ihtiyacı olabilir. –

+0

Üzgünüz, çok hızlı bir şekilde okuyordum, tabiki haklısın. – mathguy