class A 
{
  public A()
  {
  init();
  }
  protected void init() 
  {
  }
}   
class B extends A 
{
  private byte[] buf = new byte[128];
  protected void init()
  {
  buf[0]=0;
  }
}
public class MainTest {
public static void main(String[] args) {
    B b = new B();
}
}有人能帮忙修改一下么,谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【crazyhz】截止到2008-07-30 09:18:20的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=crazyhz
      

  2.   

    init(); 调用的时候
    private byte[] buf = new byte[128]; 还没有执行
    所以buf[0]=0;这句会出现空指针错误
      

  3.   

    初学,不知道怎么改.
    反正只要父类构造方法中调用init,它就在子类的成员初始化之前.
    不知道你这个例子是干什么的?
      

  4.   

    子类的构造方法中默认有一个super();会先调用init,这时候private byte[] buf = new byte[128]; 还没有执行 
    可以在子类中覆盖父类的init()方法
      protected void init(byte[] b) 
      { 
      buf[0]=0; 
      } 我想这样修改应该是可以的,应该不会空指向异常了。