今天写了个程序,出了点问题,我把问题抽象成下面的程序:
public class j
{
    public j()
    {
     System.out.println("Hello!");
    }
}class b extends j
{
public b()
{
super.j();//这句报错
}

}class j_ex
{
public static void main(String args[])
{
b b1=new b();
}
}
期望是输出Hello!,但是报错。
子类不能继承父类构造方法。。
是不是super只能调用可以从父类继承的方法,如果子类不能从父类继承一个方法,那么即使用super.method()也不能执行?

解决方案 »

  1.   

    C:\Documents and Settings\S\桌面\j.java:17: 找不到符号
    符号: 方法 j()
    位置: 类 j
            super.j();
    刚才把程序修改了一下:
    public class j
    {
        public j()
        {
         System.out.println("Hello!");
        }
        public void  print()
        {
         System.out.println("Hello World!");
        }
    }class b extends j
    {
    public b()
    {
    //super.j();
    super.print();
    }

    }class j_ex
    {
    public static void main(String args[])
    {
    b b1=new b();
    }
    }
    竟然输出了:
    Hello!
    Hello World!
    严重疑惑ing......
      

  2.   

    1、一个类文件里只能有一个public类,而且要与文件名相同。
    2、应该是super() ,而不是super.j(),
    class j
    {
        public j()
        {
    System.out.println("Hello!");
        }
    }class b extends j
    {
    public b()
    {
    super();//不带点,如果父类构造函数有参数,这样super(参数,参数)
    }
    }public class j_ex
    {
    public static void main(String args[])
    {
    b b1=new b();
    }
      

  3.   

    public class j 

        public j() 
        { 
         System.out.println("Hello!"); 
        } 
    } class b extends j 

    public b() 

    super.j();//这句报错 //super();
    } } class j_ex 

    public static void main(String args[]) 

    b b1=new b(); 

      

  4.   

    恩,也就是说,super指代父类,可以用super调用父类中的非private方法?还有就是,我修改过的程序怎么会输出
    Hello! 
    Hello World! 
    呢?我只在子类中调用了print函数阿!
      

  5.   

    在子类的构造函数里,如果不指名调用父类的某个构造函数,java会默认调用父类的无参构造函数。也就是你在
    b类里没调用j类的构造函数,但是java会默认调用父类j的无参构造函数super();
      

  6.   

    4楼就冲这一句:super.j()语法都完全不兑,怎么还给2分???????????????