抽象类是可继承实体类,但前提是实体类必须有明确的构造函数。
——问题一:是不是每个类都有一个构造函数?如果没有的话,如何得知extends的类中有明确的构造函数?偶手头上的书暂时还找不到类似问题。问题二:请问还有什么相关资料可以参考的?

解决方案 »

  1.   

    可以去看Thinking in Java,第二版的第7章<构造函数和多态>中详细介绍了构造函数的调用次序。
    现在有第3版了,网上有下,去搜一下吧。
      

  2.   

    public class Test
    {
    }
    abstract class   Test1 extends Test
    {
    }
    这个程序编译通过了,说明抽象类可以继承实体类,但实体类没有明确的构造函数啊
    每一个类都有构造函数,如果没有写构造函数,则使用默认的构造函数(把所有的int ,long 设为0
    布尔值设为flase,所有的对象设为null);
      

  3.   

    回:rebecca1() 其实偶现在也不是想太深入的问题,只不过近日自己遇到的问题要弄清楚一点而已.请看以下的问题,虽然已经知道是出错的原因(调用javax.swing.JWindow超类的构造函数出错),但是知道的还是不多.//例子1
    import javax.swing.JFrame;public class testFrame extends JFrame
    {
    public testFrame() 
    {
    super("我的测试        05-06-05,03:46");
                      //第一个问题A点setSize(300,100);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    }public static void main(String[] arguments)
        {
            testFrame tf=new testFrame();
        }
    }
    //例子2
    import javax.swing.JWindow;public class testWindow extends JWindow{
    public testWindow()
        {
    super();
                      //第一个问题B点setBounds(250,225,300,150);
        }public static void main(String[] args) 
    {
    testWindow sW=new testWindow();
    sW.setVisible(true);
    for (int i=0;i<100;i++)
    System.out.print(i+" ");
    sW.setVisible(false);
    System.exit(0);
    }
    }
    第一个问题:以上A、B两点中super()的意思是什么?为何B点中如果键入A中("我的测试        05-06-05,03:46")的字符串文字就会显示出错,
      

  4.   

    super()是调用父类的构造函数A点不出错是因为testFrame的父类JFrame有一个JFrame(String title) 的构造函数,在B点会出错是因为testWindow的父类JWindow没有JWindow(String title)的构造函数。
      

  5.   

    第一个问题:不是,比如接口,抽象.得知方式:向上转型、super
    第二个问题:资料太多了。一般入门的书籍上都所有:think in java