黑马程序员技术交流社区

标题: 构造函数无法调用的问题 [打印本页]

作者: 周超    时间: 2012-12-12 23:15
标题: 构造函数无法调用的问题
各位大牛,小生初到黑马,今天刚做基础测试题,遇到点困难,还望多指点,小生感激不尽。
/**
* 9:有这样三个类,Person,Student.GoodStudent。其中Student继承了Person,GoodStudent继承了Student,
* 三个类中只有默认的构造函数,用什么样的方法证明在创建Student类的对象的时候是否调用了Person的构造函数,
* 在创建GoodStudent类的对象的时候是否调用了Student构造函数?如果在创建Student对象的时候没有调用Person的构造函数,
* 那么采用什么样的手段可以调用父类的构造函数?
*

  如果在创建Student对象的时候没有调用Person的构造函数,
* 那么采用什么样的手段可以调用父类的构造函数?

* 如果确实没有调用父类的构造函数,想必父类的构造函数被private(排除初始化传递参数的不同,请问还有其他的可能吗,知道的请告知,谢谢!!!),单例模式去通过调用父类的static method 来返回被static定义好的对象用,再来操作被private的构造函数.
*
*
*
* */

//这是我写的作业:


class Person{

private static Person p = new Person();
public static Person getInstance(){
  
  return p;
}
private Person(){
  
  System.out.println("调用被private的person空参数构造函数");
}
Person(String args){
  
  p.getInstance();
  System.out.println(args+"调用person带一个String参数构造函数");
}
Person(String args,String arg){
  
  p.getInstance();
  System.out.println(args+"和"+arg+"调用person带两个String参数构造函数");
}

}
class Student extends Person{

private static Student s = new Student();
public static Student getInstance(){
  
  return s;
}

private Student(){
  super("学生");
  System.out.println("调用被private的Student空参数构造函数");
}
Student(String args){
  
  super("学生1","学生2");
  s.getInstance();
  System.out.println(args+"调用Student带一个String参数构造函数");
}
}
class GoodStudent extends Student{

private static GoodStudent gs = new GoodStudent();
public static GoodStudent getInstance(){
  
  return gs;
}
private GoodStudent(){
  
  super("好学生");
  System.out.println("调用被private的GoodStudent空参数构造函数");
}  
}
public class Test9 {
public static void main(String[] args){
  
  Student s = null;
  s.getInstance();
  System.out.println("*************************************");
  GoodStudent gs = null;
  gs.getInstance();
}
}


运行后的结果:
调用被private的person空参数构造函数       //父类person的private构造函数被调用了
学生调用person带一个String参数构造函数
调用被private的Student空参数构造函数   //本类Student的private构造函数被调用了
*************************************
学生1和学生2调用person带两个String参数构造函数  //person类 this.getInstance();为什么没被调用呢?
好学生调用Student带一个String参数构造函数     //    父类Student的this.getInstance();也没有被调用为什么呢?
调用被private的GoodStudent空参数构造函数     //本类GoodStudent的private构造函数被调用了







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