首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

怪有关问题

2011-12-08 
怪问题publicclassff{publicff(){//TODOAuto-generatedconstructorstub}/***@paramargs*/publicstaticvoid

怪问题
public   class   ff   {

public   ff()   {
//   TODO   Auto-generated   constructor   stub
}

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {
new   clss();
new   son();
}

}
class   son   extends   father{
  int   x   =   100;

public   son()   {
super();
}
public   void   dothing()
{
System.out.println(x);
}
}
class   father
{
public   void   dothing()
{

}
public   father()
{
dothing();
}
}

class   clss
{
int   x   =   100;
public   clss()
{
System.out.println(x);
}
}


大家觉得打印出来值是多少
100
0

为什么第二个把值取不出来啊

[解决办法]
没搞清楚初始化顺序
[解决办法]
真是很奇怪啊

[解决办法]
第二个是在类的方法里面,不在初始化的过程中,所以没调用
[解决办法]
new son(); 这句首先是调用了new father();调用dothing()方法由于son这个类重写了这个方法,因此调用son类里面的这个dothing()既是:
public void dothing()
{
System.out.println(x);
} //此时还没走到x的初始化语句因此x是默认值0。如果x是字符类型的话就是null了
[解决办法]
初始化问题

热点排行