【问题标题】:how does super() know what do with the parameters entered? [duplicate]super() 如何知道输入的参数如何处理? [复制]
【发布时间】:2014-07-15 17:06:26
【问题描述】:

我目前正在浏览此处的示例代码:http://www.java2s.com/Code/Java/Chart/JFreeChartStackedBarChartDemo1.htm

package org.jfree.chart.demo;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A simple demonstration application showing how to create a stacked bar chart
 * using data from a {@link CategoryDataset}.
 *
 */
public class StackedBarChartDemo1 extends ApplicationFrame {

    /**
     * Creates a new demo.
     *
     * @param title  the frame title.
     */
    public StackedBarChartDemo1(final String title) {

        super(title);
        final CategoryDataset dataset = createDataset();
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }

    /**
     * Creates a sample dataset.
     * 
     * @return a sample dataset.
     */
    private CategoryDataset createDataset() {
        return DemoDatasetFactory.createCategoryDataset();
    }

    /**
     * Creates a sample chart.
     * 
     * @param dataset  the dataset for the chart.
     * 
     * @return a sample chart.
     */
    private JFreeChart createChart(final CategoryDataset dataset) {

        final JFreeChart chart = ChartFactory.createStackedBarChart(
            "Stacked Bar Chart Demo 1",  // chart title
            "Category",                  // domain axis label
            "Value",                     // range axis label
            dataset,                     // data
            PlotOrientation.VERTICAL,    // the plot orientation
            true,                        // legend
            true,                        // tooltips
            false                        // urls
        );
        return chart;

    }

    public static void main(final String[] args) {

        final StackedBarChartDemo1 demo = new StackedBarChartDemo1("Stacked Bar Chart Demo 1");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);

    }

}

对于这部分

public StackedBarChartDemo1(final String title) {

        super(title);
        final CategoryDataset dataset = createDataset();
        final JFreeChart chart = createChart(dataset);
        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);

    }

我对什么 super(title); 有点困惑。做。我知道它使用字符串参数“tittle”调用父构造函数,但我希望有人能解释它对参数的作用。我查看了许多教程,他们有所帮助,但他们对我的问题的回答对我来说有点高级。我了解从父类调用方法时如何使用 super() ,但我不明白为什么在此代码中需要它。我的猜测是它被传递给 ApplicationFrame 类以放入方法 setTitle() 但我不确定它是如何工作的。

【问题讨论】:

  • 不要添加不必要的代码(例如:那些巨大的 cmets)。仅粘贴相关部分

标签: java parent children super


【解决方案1】:

调用super(title) 将使用标题参数运行ApplicationFrame 中的构造函数。查看ApplicationFrame 看看它在做什么。

此外,只要您了解文档中发生的情况,它们如何实现代码并不重要。

【讨论】:

  • 所以它是把标题传递给ApplicationFrame的构造函数?这是否意味着我将拥有 ApplicationFrame 和 StackedBarChartDemo1 的实例?
  • 我认为您需要花一些时间了解inheritance 的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
  • 2018-08-04
  • 2017-10-17
  • 1970-01-01
相关资源
最近更新 更多