Java类子类变量引用

时间:2011-01-24 20:30:45

标签: java class

我在课堂上遇到'找不到符号'错误。变量在超类中明确声明,但子类无法看到它。除了子类JLabel中的RecordViewer的新构造函数之外,我没有收到任何错误。

 class RecordViewer extends JDialog{
     private JButton next;
     private JButton prev;
     private JLabel label;
     private int current;

     public RecordViewer(CDinventoryItem [] array){
         super();
         current = 0;
         final CDinventoryItem [] items = array;

         label = new JLabel(items[getCurrent()]);

从我的CDinventoryItem类预定义toString ...

        @Override public String toString(){

        //  Decimal foramting for the inventory values
        NumberFormat dformat = new DecimalFormat("#0.00");

        //  Formatting for the inventory output
        StringBuilder ouput  = new StringBuilder();
        String New_Line = System.getProperty("line.separator");

            ouput.append("The product number of my CD is: ").append(iPitemNumber).append (New_Line);
            ouput.append("The title of the CD is: ").append(sPtitle).append (New_Line);
            ouput.append("I have ").append(iPnumberofUnits).append(" units in stock.").append (New_Line);
            ouput.append("The total value of my inventory on this product is: ").append(dformat.format(stockValue())).append (New_Line);
            return ouput.toString();
        }

3 个答案:

答案 0 :(得分:3)

这是标准的Java JLabel吗?您正在尝试传递CDinventoryItem类型的对象,并且JLabel将没有构造函数来处理这种类型的参数,除非它正在扩展String或Icon类。

答案 1 :(得分:2)

  • 整理您的导入,以便正确导入JLabel
  • JLabel未定义采用自定义类型的构造函数。你需要在那里传递一个字符串。

答案 2 :(得分:0)

只是一个猜测,但你的问题措辞暗示你试图直接从子类使用私有字段?私有字段除了声明它们的类之外的任何地方都看不到,包括同一继承层次结构中的类。你可以使它受到保护,但这是不赞成的 - 更好的是提供一个mutator方法来标记或更好地,在超类构造函数中初始化它。