Certainly. But it will only work if the object is being cast is indeed a derive2 class.
Here is a complete self-contained example, with code tags. Please show your code this way so it is easy for others to give it a try.
module prg;
class base;
int x;
endclass
class derive1 extends base;
int y;
endclass
class derive2 extends derive1;
int z;
endclass
base b1,b;
derive2 d2,d;
initial begin
d = new();
b1 = d; // no $cast needed
$cast(d2,b1); // $cast needed, and will succeed
b1 = new;
$cast(d2,b1); // $cast needed, and will fail
end
endmodule