标题:老师让我们写的较简单的一个程序,但有问题,求大神解答
只看楼主
选调生
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:82
专家分:100
注 册:2016-6-24
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
老师让我们写的较简单的一个程序,但有问题,求大神解答
//写一个关于家庭成员类,我用JCreator写的
class Human{
    String name;
    int age;
    char identity;  //家庭身份
   
    public Human(String name,int age,char identity){
        this.name=name;
        this.age=age;
        this.identity=identity;
    }
   
    public String getName(){
        return name;
    }
   
    public int getAge(){
        return age;
    }
   
    public char getIdentity(){
        return identity;
    }
   
    public void setName(String name){
        this.name=name;
    }
   
    public void setAge(int age){
        this.age=age;
    }
   
    public void setIdentity(char identity){
        this.identity=identity;
    }
}

class Family extends Human{
    public Family(String name1,int age1,char identity1){
        name=name1;
        age=age1;
        identity=identity1;
    }
}
搜索更多相关主题的帖子: return public identity 
2017-03-19 20:12
qq807886727
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2017-3-10
得分:4 
我懂你意思,你想用子类的构造方法里面的成员指向父类。
你要清楚每个方法里的变量默认都是局部变量,是不能直接引用到其他类里面的,所以你子类构造方法的name,age,identity并不是父类中的name,age,identity。
要继承父类的构造方法属性,用super关键字就行了。
class family extends Human{
    public family(String name,int age,char identity){
        super(name,age,identity);
    }
}
2017-03-20 12:53
will丶
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:117
专家分:443
注 册:2015-10-19
得分:4 
以下是引用qq807886727在2017-3-20 12:53:43的发言:

我懂你意思,你想用子类的构造方法里面的成员指向父类。
你要清楚每个方法里的变量默认都是局部变量,是不能直接引用到其他类里面的,所以你子类构造方法的name,age,identity并不是父类中的name,age,identity。
要继承父类的构造方法属性,用super关键字就行了。
class family extends Human{
    public family(String name,int age,char identity){
        super(name,age,identity);
    }
}

正解,建议你仔细看下super和this的区别,这个老师应该会讲到吧

腾空类星陨,遥望若花生。
2017-03-20 20:26
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:4 
九九来学Java啦~这个九九也知道~this就是自己的东西~super就是指父亲的东西~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-03-21 10:07
HolyOrder
Rank: 3Rank: 3
等 级:论坛游侠
威 望:6
帖 子:47
专家分:140
注 册:2017-2-6
得分:4 
2楼正解!建议把父类的属性私有化!
2017-03-21 22:54
纵横阳仔
Rank: 7Rank: 7Rank: 7
来 自:自学成才的火星人儿
等 级:贵宾
威 望:26
帖 子:147
专家分:698
注 册:2016-10-20
得分:4 
这个问题的关键不是这里,而是在你创建这个构造方法的时候,系统会自动帮你添加一个调用父类构造方法的super();即
 public Family(String name1,int age1,char identity1){
       super();
        name=name1;
        age=age1;
        identity=identity1;
    }
但是你的父类并没有空参构造方法,所以会报错,但这不是错误的根本.你可以在父类添加空参构造方法.
楼上的解决思路是简化代码的最佳选择.但不是最合适的方法.
我们在创建标准类时,一般提供一个空参和一个人满参构造方法.而且会将成员属性私有化,以体现封装的思想.

[此贴子已经被作者于2017-3-22 10:05编辑过]

2017-03-22 09:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475265-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.134040 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved