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语言