class BasePacket;
int A = 1;
int B = 2;
function void printA;
$display("BasePacket::A is %0d", A);
endfunction : printA
virtual function void printB;
$display("BasePacket::B is %0d", B);
endfunction : printB
endclass : BasePacket
class My_Packet extends BasePacket;
int A = 3;
int B = 4;
function void printA;
$display("My_Packet::A is %0d", A);
endfunction: printA
virtual function void printB;
$display("My_Packet::B is %0d", B);
endfunction : printB
endclass : My_Packet
module test();
BasePacket P1 = new;
My_Packet P2 = new;
initial begin
P1.printA; //BasePacket::A is 1 基类的值
P1.printB; // BasePacket::B is 2 基类的值
P1 = P2; //
P1.printA; //BasePacket::A is 1 基类的A 因为不是virtual function
P1.printB; // My_Packet::B is 4 扩展类的B ,因为是virtual function
P2.printA; //My_Packet::A is 3 扩展类
P2.printB; //My_Packet::B is 4 扩展类
end
endmodule
class base_class;
int a=1;
virtual function void print_a;
$display(" base_class::a is %d" ,a);
endfunction
endclass
class new_class extends base_class;
int a=2;
virtual function void print_a;
$display( "new_class::a is %d" ,a);
endfunction
endclass
module test_class;
base_class C1 = new;
new_class C2=new;
initial begin
C1=C2;
C1.print_a; // # new_class::a is 2 扩展类的a 因为是virtual function
end
endmodule
class BasePacket; int A = 1; int B = 2; function void printA; $display("BasePacket::A is %0d", A); endfunction : printA virtual function void printB; $display("BasePacket::B is %0...