Inheritance PL/SQL对象继承-使用具有参数的基本构造函数
我有以下代码演示了该问题:Inheritance PL/SQL对象继承-使用具有参数的基本构造函数,inheritance,plsql,Inheritance,Plsql,我有以下代码演示了该问题: create type base_class as object ( v number ,constructor function base_class(i_v number) return self as result ,member procedure print ) not instantiable not final; create type body base_class as constructor function base_class
create type base_class as object (
v number
,constructor function base_class(i_v number) return self as result
,member procedure print
) not instantiable not final;
create type body base_class as
constructor function base_class(i_v number)
return self as result
is
begin
v := i_v;
end;
member procedure print
is
begin
dbms_output.put_line('V is ' || v);
end;
end;
create type derived under base_class (
constructor function derived return self as result
);
create type body derived as
constructor function derived
return self as result
is
begin
base_class(5); -- This bit is the problem
end;
end;
/
在派生构造函数中,我希望使用base\u类
构造函数传递一个值。我一直无法找到如何做到这一点
上面的尝试我得到了错误(6,6):PLS-00221:“基本类”不是过程或未定义
有人知道我如何实现使用带参数的基类构造函数的目标吗?恐怕这是不可能的。这是PL/SQL的一个限制
最好的替代方法是在基类中声明一个初始化器成员过程,然后在基类和派生类构造函数中调用它。是否可以使基类
不可实例化而不是最终的然后在派生类中隐藏初始化函数?不确定,我认为没有。但是按照您的想法,您不需要在不可实例化的基类中声明initializator成员过程。你可以在派生类中声明一个构造函数来完成所有的初始化。我试图把初始化代码放在一个地方,而不是放在两个或三个派生类中,即派生类,派生类。我当然知道。我在PL/SQL中找不到比声明初始化器成员过程更好的解决方案。这不是真正的OOP,但PL/SQL不是OO语言