In reply to lalithjithan:
Of Course you can do this.
See the example below:
import uvm_pkg::*;
`include "uvm_macros.svh"
interface intf ();
logic sig1;
logic sig2;
endinterface
class my_object extends uvm_object;
virtual intf vif;
int val1;
function new(int val);
val1 = val;
endfunction
endclass
module top;
my_object obj;
int val2 = 5;
intf if1();
initial begin
uvm_config_db #(virtual intf)::set(null,"*","intf",if1);
obj = new(val2);
obj.vif = if1;
end
endmodule