黑马程序员技术交流社区

标题: 黑马一道测试题疑问 [打印本页]

作者: 胡建伟    时间: 2013-8-26 12:09
标题: 黑马一道测试题疑问
本帖最后由 胡建伟 于 2013-8-26 21:23 编辑

     有这样三个类,Person、Student、GoodStudent。
其中GoodStudent继承于Student,Student继承于Person。
如何证明创建GoodStudent时是否调用了Person的构造函数?
在GoodStudent中是否能指定调用Student的哪个构造函数?
在GoodStudent中是否能指定调用Person的哪个构造函数?

    有点混乱了,希望各位高手帮忙分析分析,看如何结局,本人菜鸟,希望附带详细解释哈

作者: gulup    时间: 2013-8-26 12:14
测试题?基础测试题?说实在的,这个真的是很基础的东西,建议楼主去学习毕老师的JAVA基础视频之后再来做。。
作者: gulup    时间: 2013-8-26 12:16
代码不能给你写,给你说下思路。再三个类的构造方法中都添加输出语句,然后新建几个对象,再看看输出内容,你就知道结果了。至于怎么指定调用那个构造方法,根据方法报数类型和个数决定。
作者: 杨伟斌    时间: 2013-8-26 13:05
看看,了解一下入学测试题。楼主加油。
作者: べPNヤ    时间: 2013-8-26 13:30
本帖最后由 べPNヤ 于 2013-8-26 13:35 编辑

class Persion
{
Persion(){
  System.out.println("Persion function");
}
}

class Student extends Persion
{
int age;
Student(){
  System.out.println("Student function");
}
Student(int age){
  this.age=age;
  System.out.println("Student'age is "+this.age);
}

}

class GoodStudent extends Student
{

GoodStudent(){
  super(20);
  System.out.println("GoodStudent function");
}
public static void main(String[] args){
  new GoodStudent();
}
}
/*
输出结果为
Persion function
Student'age is 20
GoodStudent function
*/

创建GoodStudent 对象的时候输出了Persion function  证明调用了它的构造函数,因为构造函数第一句有个隐藏语句super()
GoodStudent 的show()方法通过制定参数的形式可以调用父类(student)对应的构造方法
第三个问题不确定,貌似之类构造函数只能调用父类的构造函数,不能越级啊,求楼下的详细解释



作者: 相许。    时间: 2013-8-26 13:34
你可以给每一个类设置有参和无参的构造函数进行实验,首先给每个类设置无参的构造函数,每个构造函数只有一条显示语句,可以显示出不同类的名字,以区别不同的类来观察显示的顺序从而得到子类和父类之间的执行顺序。然后再在每一个类中定义一个有参的构造函数,功能自己想喽~然后根据之前得到的顺序,通过super关键字进行不同的引用即可达到测试这个例题的作用
作者: 冯超    时间: 2013-8-26 13:45
怎么证明写函数。看输出 就可以证明 且先后顺序一幕了然。
在GoodStudent中是否能指定调用Student的哪个构造函数?
          public GoodStudent() {
                super("feng");
                System.out.println("3333");
               
        }

在GoodStudent中是否能指定调用Person的哪个构造函数?
   这个估计不能把··我不知道
作者: hx32    时间: 2013-8-26 20:18
Person、Student、GoodStudent
GoodStudent按我的理解不能直接调用Person中的构造函数,因为GoodStudent都不知道有Person这个类的存在。但是Student是继承Person,那么在构造的时候就会参考Person的构造函数,相当于GoodStudent间接调用了Person中的构造函数。
作者: 杨增坤    时间: 2013-8-26 20:53
楼主,如果问题解决了,请把问题的未解决更改为已解决,谢谢合作,

更改方法:http://bbs.itheima.com/thread-71308-1-1.html
作者: 胡建伟    时间: 2013-8-26 21:11
べPNヤ 发表于 2013-8-26 13:30
class Persion
{
Persion(){

多谢大牛哈和楼下的大牛,解释很详细





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2