System verilog pass by value in class

anyone can help me with this code. at line 29 getting error why?

class call_by_reference_1;
 int a=30;
 function abc(int x,int y);
    x=10;
	y=20;
	$display("inside class1 : x = %0d , y = %0d",x,y);
 endfunction
endclass

class call_by_reference_2;
 int a=40;
 function abc(int x,int y);
    x=10;
	y=20;
	$display("inside class2 : x = %0d , y = %0d",x,y);
 endfunction
endclass

module call_by_ref();
 int a=4,b=6; 
 initial begin
  call_by_reference_1 obj1,obj2 ;
 // call_by_value_2 obj2;
  obj1 = new(); 
  obj2 = new();
  obj1.a = 50;
  $display("inside module(class 1) : a = %0d",obj1.a);
  $display("inside module(class 2) : a = %0d",obj2.a);
  obj1 = ref obj2;
  $display("inside module(class 1) : a = %0d",obj1.a);
  $display("inside module(class 2) : a = %0d",obj2.a);
//  $display("inside module(before call) : a = %0d , b = %0d",a,b);
//  obj1.abc(a,b);
//  $display("inside module(before after) : a = %0d , b = %0d",a,b);
 end
endmodule

In reply to mukesh kumar:
In SystemVerilog, class variables alway are references. You just need to do

  obj1 = obj2;

See http://go.mentor.com/class-on-classes

In reply to dave_59:

I WANTED TO DO PASS BY REF IN CLASS.
CAN YOU ELABORATE OR GIVE SOME EXAMPLE WHERE PASS BY VALUE IN CLASS

In reply to mukesh kumar:

You are confusing two different topics.
You can never pass class objects by value. You can only pass the handle to a class object by value. Please review my link above as well as my OOP course.