pl/sql中的繼承與多態

CREATE TYPE super_t AS OBJECT (n NUMBER, MEMBER FUNCTION func RETURN NUMBER) NOT FINAL; -- NOT FINAL表示可以被繼承 CREATE TYPE BODY super_t AS MEMBER FUNCTION func RETURN NUMBER IS BEGIN RETURN n + n; END; END; CREATE OR REPLACE TYPE sub_t UNDER super_t -- UNDER表示繼承 (n2 NUMBER, OVERRIDING MEMBER FUNCTION func RETURN NUMBER) NOT FINAL; CREATE TYPE BODY sub_t AS OVERRIDING MEMBER FUNCTION func RETURN NUMBER IS BEGIN RETURN n2 * n2; END; END; CREATE OR REPLACE TYPE final_t UNDER sub_t (n3 NUMBER); DECLARE v super_t := final_t(1,2,3); v2 super_t := super_t(1); BEGIN DBMS_OUTPUT.PUT_LINE(v.func); DBMS_OUTPUT.PUT_LINE(v2.func); END; -- 結果 4 2

你可能感兴趣的:(Oracle,-,PL/SQL,function,n2,object)