路科v0,第七周,类的继承练习代码


class packet;
  integer i = 0;

  function new();
    i = 2;
  endfunction

  function shift();
    i = i<<1;
  endfunction

endclass



class linkpacket extends packet;
  //这个i与他父类中的i不一样,(域不同)
  //如果子类父类存在同名变量,则优先搜索子类域中的变量
  integer i = 3;


  //new函数会间接调用父类new
  //注 这里如果父类的new函数与子类的new函数,都定义了参数,则子类必需调用super.new(参数);来继承父类
  function new();
    i = 3;
  endfunction


  function shift();//与new函数不同,自己定义的函数不会间接调用shift
    super.shift();
    //这可以加super继承父类,如果不加,则不会继承父类
    // 注 这里虽然调用了父类的方法,但这里的i是子类域中的i,因此父类中的shift并没有对这个i起作用,
    //因此,子类中的变量尽量不要与父类中的变量同名,以免混淆
    //万一出现子类父类同名变量则会导致无法获取父类的这个同名变量
    i = i<<2;
  endfunction


endclass


module tb;

  initial begin
    packet p = new();
    linkpacket lp = new();
    $display(" p.i = %d",p.i);
    $display("lp.i = %d",lp.i);

    p.shift();
    $display("after shifut  p.i = %d",p.i);
    lp.shift();
    $display("after shifut lp.i = %d",lp.i);
  end

endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值