子类中调用父类中的属性值为null

子类中调用父类中的属性值为null

老师我已经在测试类中实例化给父类work的name赋值了  可是为什么我在子类中直接调用结果为空??

一下是源代码: 四个类

public class Test {

    public static void main(String[] args) {

        Work fa=new Work("测试工作");

System.out.println("父类信息测试:"+fa.work());

TestWork t=new  TestWork(10,5);


System.out.println("测试工作类信息测试:"+t.work());


DevelopmentWork tt=new DevelopmentWork(1000,10);


System.out.println("研发工作类信息测试:"+tt.work());


}

}

 

 

 

public class Work {

    // 属性:工作ming

     private String name ;

 

// 无参构造方法

public Work(){

    

}

 

// 带参构造方法,完成工作类型的赋值

public Work(String name){

    this.setname(name);

    

}

 

   // 公有的get***/set***方法完成属性封装

   public void setname(String name){

       this.name=name;

   }

   public String getname(){

       return this.name;

   }

 

// 方法:工作描述,描述内容为:开心工作

public String work() {

   return "开心工作";


}

}

 

 

 

public class TestWork extends Work {

    //属性:编写的测试用例个数、发现的Bug数量

    private int num;

    private int bug;

 

    // 编写构造方法,并调用父类相关赋值方法,完成属性赋值

public TestWork(){

    

}

public TestWork(int num,int bug){

    this.setnum(num);

    this.setbug(bug);

}

    // 公有的get***/set***方法完成属性封装

    public void setnum(int num){

        this.num=num;

    }

    public int getnum(){

        return this.num;

    }

    public void setbug(int bug){

        this.bug=bug;

    }

    public int getbug(){

        return this.bug;

    }

 

 

// 重写运行方法,描述内容为:**的日报是:今天编写了**个测试用例,发现了**bug。其中**的数据由属性提供

public String work() {

    return this.getname()+"的日报是:"+"今天编写了"+num+"个测试用例,发现了"+bug+"个bug";

}



}

 

 

 

public class DevelopmentWork extends Work {

    // 属性:有效编码行数、目前没有解决的Bug个数

    private int a;

    private int b;

 


//编写构造方法,并调用父类相关赋值方法,完成属性赋值

public DevelopmentWork(){

    

}

public DevelopmentWork(int a,int b){

    this.seta(a);

    this.setb(b);

    

}


    // 公有的get***/set***方法完成属性封装

    public void seta(int a){

        this.a=a;

    }

    public int geta(){

        return this.a;

    }

    public void setb(int b){

        this.b=b;

    }

    public int getb(){

        return this.b;

    }


// 重写运行方法,描述内容为:**的日报是:今天编写了**行代码,目前仍然有**个bug没有解决。其中**的数据由属性提供

public String work() {

    return this.getname()+"的日报是:今天编写了"+a+"行代码,目前仍然有"+b+"个bug没有解决";

 

}

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
好帮手慕小脸 2020-06-15 15:56:17

同学你好,按照同学上述所说,是不能实现的,既不使用set赋值,也不使要构造方法赋值,最终得到结果就是null。

2、这里的name是调用父类的name,是可以直接使用。

祝学习愉快!


  • 提问者 枢九 #1
    也就是说要么set赋值 要么必须子类本身的构造方法定义参数 string name. 然后调用get。 就是说在测试类对父类进行实例化然后对父类的name赋值这样子类调用依然为空是吧 就是不太知道是什么原因 一直纠结这个问题 谢谢老师
    2020-06-15 16:08:15
  • 好帮手慕小脸 回复 提问者 枢九 #2
    同学理解是可以的哦~继续加油~ 如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
    2020-06-15 16:15:38
好帮手慕小脸 2020-06-15 15:40:07

同学你好,测试类中打印语句调用的是work方法,且在work方法中使用的是get取值,那么就可以使用set来进行赋值。如果按照同学说的以实例化赋值也是可以。如下所示:

在类中定义全参构造方法,在测试类中直接赋值即可

http://img1.sycdn.imooc.com//climg/5ee725c209f1247506590168.jpghttp://img1.sycdn.imooc.com//climg/5ee725cc09b4337805780197.jpg

http://img1.sycdn.imooc.com//climg/5ee725b3093c15a308340478.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 枢九 #1
    老师您好 我是说我不在子类的构造方法中定义name 只在测试方法中实例化父类的对象的时候给name赋值 然后子类调用getname为空 这是什么原因 您可以看看我的源代码 子类中的构造方法参数没有getname
    2020-06-15 15:46:52
  • 提问者 枢九 #2
    没有String name
    2020-06-15 15:47:38
枢九 提问者 2020-06-15 15:28:07

老师您说的我懂 但是我是通过实例化对父类的name赋值 这样不行吗?

好帮手慕小脸 2020-06-15 15:26:06

同学你好,getname是取值,但在测试类中同学都没有对此进行set赋值,所以得到的结果是null,具体修改如下:

http://img1.sycdn.imooc.com//climg/5ee7228409b0e2d307570366.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师