Corsair

My javaWorld
数据加载中……
继承带参数构造器的超类并且调用自身其他构造器的讨论
// 首先有一个带参数的超类: 
class  SuperClass
   String str
= " create superClass obj "
   SuperClass(
int  num)
       System.out.println(num
+ str); 
   }
 
}
 
/*
现在有一个子类继承了这个超类,那么这个子类应该显式的调用超类的构造函数,以便初始化自己的父类,如下。 
*/

class  SubClass  extends  SuperClass
   SubClass(
int  num)
      
super (num); 
   }
 
}
 
/*
现在子类还要定义一个新的构造函数,并且在前一个构造函数中调用这个新的构造函数,更改如下: 
*/

class  SubClass  extends  SuperClass
   SubClass(
int  num)
      
super (num); 
      
this ( " other SubClass(String) " ); 
   }
 
   SubClass(String s)

      System.out.println(s); 
   }
 
   
public   static   void  main(String[] args)
      
new  SubClass(); 
   }
 
}
 
/*
由于我们知道在一个类中的构造函数中要调用自己的其他构造函数,只能通过this();的方式调用一个,并且要放在所在构造函数的第一行,但是使用super();显式调用也父类带参构造函数也只能放在第一行,那么这样就会发生冲突。
*/
// 参考: 
public   class  SuperClass 
String str
= " create superClass obj " ;  
 SuperClass(
int  num) {  
       System.out.println(num
+ str);  
   }
  
}
 
public   class  SubClass  extends  SuperClass 
   SubClass(
int  num) {  
      
super (num);  
      sub(num,
" other Subclass(String) " ); 
   }
  
   SubClass(
int  num,String s) {  
      
super (num); 
  System.out.println(s);  
   }
 
   
// ------------- 
   SubClass sub( int  num,String s)
   
return   new  SubClass(num,s); 
   }
 
   
public   static   void  main(String[] args) {  
      
new  SubClass( 1 ); 
   }
  
}

posted on 2007-03-31 10:56 银河海盗 阅读(433) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: