当前位置: 代码迷 >> Java相关 >> 关于构造器继承的有关问题
  详细解决方案

关于构造器继承的有关问题

热度:7934   发布时间:2013-02-25 21:49:16.0
关于构造器继承的问题
写个简单的程序说一下:
class Test{
  public String name;
  public Test(String name){
  this.name=name;
}
}
class Test1 extends Test{
  public Test1(){
  super(name)
}
}
  这种继承的时候会报错,name必须是static,但是如果name是static的话,构建的变量就成了类变量,无法对对象进行不同的赋值了,Test中所有的对象的name属性就都一样了 。
  这个问题怎么解决啊,既要继承父类带有参数的构造器,又要保证name是一个实例变量,而不是类变量!

------解决方案--------------------------------------------------------
逻辑错误
构造方法就是为了给对象的变量赋值的
在new一个对象时,会调用其构造方法
你写的这个构造方法会先调用super(name),而此时name是父类对象,但是name尚未赋值,用尚未赋值的变量去调用Test(String name)这个构造方法当然会出错
LZ的Test1的构造方法少些了个参数吧!应该是public Test1(String name)
------解决方案--------------------------------------------------------
Java code
class Test{  public String name;  public Test(String name){  this.name=name;}}class Test1 extends Test{  public Test1(){  super(null); //不知道LZ什么目的,  //在父类构造方法调用结束以前,不允许访问父类属性,  //因为父类构造方法没有执行结束,父类对象还没有被创建,还是null,所以自然不能如果调用  //既然初始化时父类的name也会是null(没有被赋值的时候),所以索性传个null进去好了}}
  相关解决方案