Can we use interface in object in uvm?

In reply to chr_sue:

This is my driver run task code


    task get_and_drive();
        basic_seq_item     req;
	drv_vif.intf_a = 0;drv_vif.intf_b = 0;drv_vif.intf_c = 0;drv_vif.intf_start = 0;
        forever begin
	    @(posedge drv_vif.intf_clk);
	    seq_item_port.get_next_item(req);
	    drv_vif.intf_a = req.seq_item_a;
	    drv_vif.intf_b = req.seq_item_b;
	    drv_vif.intf_start = req.seq_item_start;
            `uvm_do_callbacks(alu_driver, alu_drv_cb, corrupt_data())
	    drv_ap.write(req);
	    //`uvm_info(get_type_name, $sformatf("Driver transaction %s", req.sprint()), UVM_LOW)
	    seq_item_port.item_done();
	end 
    endtask : get_and_drive

Here is the callback I want to implement, the idea is the callback generates junk output values which would be caught in the scoreboard.


class alu_drv_cb extends uvm_callback;

    function new(string name = "alu_drv_cb");
        super.new(name);
    endfunction : new

    virtual task corrupt_data();
    // Drive random data on interface output, something along the lines of
    // intf_handle.intf_c = 'h1234_5678;
    endtask : corrupt_data

endclass : alu_drv_cb