黑马程序员技术交流社区

标题: 关于子父类实例化的问题 [打印本页]

作者: 冯大卫    时间: 2014-9-4 23:19
标题: 关于子父类实例化的问题
class  Demo extends Super
{
        public Demo(String s)
        {
               
                i= 2;
        }
        public static void main(String[] args)
        {
                Demo d = new Demo("yes");
                System.out.println(d.i);
        }
}
class Super
{
         int i= 0;
         public Super(String s)
         {
                 i= 1;
         }
}
为什么编译不能通过?
作者: 花开彼岸天    时间: 2014-9-5 01:02
首先  你的公众类呢?,
构造函数的引用地址呢?
作者: wyxc    时间: 2014-9-5 10:57
你在子类的前面加上public就可以了
作者: yuZhe_toString    时间: 2014-9-5 11:04
因为你的父类也需要实例化,但是在你的子类中没有提供父类实例化所需要的参数。
正确的方法是在子类的构造方法中加入一句话。super(s);
作者: Peach2014    时间: 2014-9-5 11:07
Implicit super constructor Super() is undefined. Must explicitly invoke another constructor
不明确的超类构造函数Super()没有被定义。必须明确的调用其他构造函数。
你在Super中加入一个空的构造函数就可以了!
  1. public class Test {
  2.     public static void main(String[] args)
  3.     {
  4.             Demo d = new Demo("yes");
  5.             System.out.println(d.i);
  6.     }
  7. }
  8. class  Demo extends Super
  9. {
  10.         public Demo(String s)
  11.         {         
  12.                i= 2;
  13.         }
  14. }
  15. class Super
  16. {
  17.          int i= 0;
  18.          public Super(){}
  19.          public Super(String s)
  20.          {
  21.                  i= 1;
  22.          }
  23. }
复制代码


作者: 家进    时间: 2014-9-5 12:04
简单地说,父类没有空参数的构造函数,而子类的构造函数里会默认调用父类的空参数的构造函数
作者: 笑脸迷人    时间: 2014-9-5 13:19
子父类 实例化的顺序,以及调用方式




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