Java - вызов суперкласса и использование стандартных методов - PullRequest
1 голос
/ 22 марта 2012

Мне интересно, какова реальная причина, почему вы можете сделать это на JFrame:

super("My Frame");

И это так же, как:

setTitle("My Frame");

Я понимаю, что они делают одно и то же, но что на самом деле происходит с каждым? Почему вы вызываете суперкласс вместо простого использования унаследованных методов?

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

У JFrame есть конструктор, который говорит

 public JFrame(String title) throws HeadlessException {
        super(title);
        frameInit();
    }

Если вы следуете ему, вы в конечном итоге достигнете класса java.awt.Frame, где в его конструкторе написано:

public Frame(String title) throws HeadlessException {
        init(title, null);
    }

Чей метод init делает:

private void init(String title, GraphicsConfiguration gc) {
    this.title = title;
    SunToolkit.checkAndSetPolicy(this, false);
}

В итоге вы используете super просто потому, что вы вызываете этот конкретный конструктор.Если вы используете какой-либо другой конструктор JFrame, который не получит данную строку, тогда вы можете установить заголовок вручную, как вы предлагаете.

0 голосов
/ 22 марта 2012

когда вы говорите super("My Frame"), вы вызываете конструктор суперкласса.

и когда вы говорите setTitle("My Frame") это просто установка заголовка.

Подробнее об этом можно узнать на http://docs.oracle.com/javase/tutorial/java/IandI/super.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...