0

我从一本书中学习 Java。我已经完成了继承剧集,但我不理解用户界面剧集中的示例程序:

public class AWTApp extends Frame {
...
public AWTApp(String caption)
    {
        super(caption);
        setLayout(new GridLayout(PANELS_NO, 1));
        for(int i=0;i<PANELS_NO;i++)
        {
            panels[i]=new Panel();
            add(panels[i]);
        }
        label_test(panels[0]);
        ...
    }
}

这是继承 Frame 类的主类(AWTApp)中的构造函数。在另一个示例中,框架是主类 (AWTApp) 中的一个变量,要添加组件,您可以编写 frame.add(component) ((Frame nam - frame, Component name - component))。如果没有框架对象,他们怎么能在这段代码中只写 add() 或 pack() ?

4

2 回答 2

0

public class AWTApp extends Frame

这意味着 AWTAppis a框架

所以当你打电话

public AWTApp(String caption)
    {
        super(caption); // here you are calling super constructor the frame constructor and creating the frame

       this.setLayout(new GridLayout(PANELS_NO, 1)); // cause you are a frame you can call with this parents public protected (and package if they are in the same package)
       this.add(..); 
    }
}
于 2013-07-16T20:56:59.470 回答
0

这里有一些解释。

首先,一些代码:

public class Parent{

    public void doThing(){
        System.out.println("I did a thing!");
    }

}

public class Child extends Parent{

    public void doAnotherThing(){
        System.out.println("I did another thing!");
    }

}

public class MainClass{

    public static void main(String[] args){
        Parent p = new Parent();
        Child c = new Child();
        p.doThing();
        c.doThing(); // This is correct because c is a Parent!
        c.doAnotherThing(); // This is correct, because c is also a child.
     }

}

Child继承所有Parents 方法,因为Child只是Parent. 在您的程序上下文中,这意味着 AWTApp 可以调用 Frame 的所有方法,因为它是一个框架,因此可以执行框架可以执行的任何操作,以及它自己的方法。

于 2013-07-16T21:04:32.360 回答