2015-02-20 2 views
-1

Это немного связано, и я хочу объяснить это кратко, не заставляя вас читать много, а затем показывать код. Я не в этом разбираюсь.Компиляция и интерпретация Назначение пакетного программного обеспечения - Невозможно отображать многоуровневые выходы класса

Barebones описание. В этом задании мы изучаем, как компилируем, интерпретируем в командной строке, создаем пакет, создаем класс и подклассы, импортируем подклассы и выполняем команды println во всех подклассах как одну скомпилированную программу , и отобразите их в командной строке. Я что-то упустил, и команды subclass println не отображаются, когда я запускаю GreetingsClass.java, Superclass. Все они в одном пакете. Каталог пакетов - com.cisp2030.course, и три файла классов Chapters существуют в папке .Chapters внутри .course.

Во-первых, GreetingsClass.java:

package com.cisp2030.course; 
import com.cisp2030.course.Chapters.*; 

public class GreetingsClass 
{ 
    Chapter1 c1 = new Chapter1(); 
    Chapter2 c2 = new Chapter2(); 
    Chapter3 c3 = new Chapter3(); 

    public static void main(String[] args) 
    { 
    System.out.println("$ Greetings, CISP2030!"); 
    System.out.println(c1); 
    } 

} 

Это, как предполагается импортировать и создавать экземпляры переменных следующего кода, содержащегося в Chapter1.class в папке .Chapters.

package com.cisp2030.course.Chapters; 
public class Chapter1 
{ 
    public Chapter1() 
    { 
     System.out.println("Hello from Chapter1!"); 
    } 
} 

Только представьте себе, что приведенный выше код является одним из трех, которые варьируются от chapter1-chapter3, и они были собраны Command Prompt в файлы классов в соответствующей директории.

Ожидаемый результат компиляции, интерпретации и запуска этой программы в командной строке должен быть одной программой, которая отображает все 3-4 команды println. Однако в это время в командной строке hte отображается только одна команда println. Я думаю, что это связано с тем, что мне нужно подклассифицировать классы Chapter в GreetingsClass и импортировать их уже как-то прямо GreetingsClass для выполнения команд из файлов классов hte Chapters, но я не знаю, как, и я искал это в google последовательно и искать в моем учебнике, и я не мудрее. Я думаю, что я пропускаю что-то в самом коде, но я не знаю достаточно, чтобы придумать какие-либо идеи. Любая помощь или совет будут очень признательны.


Кодекс был закончен:

package com.cisp2030.course; 
import com.cisp2030.course.Chapters.*; 

public class GreetingsClass 
{ 

    public static void main(String[] args) 
    { 
    System.out.println("$ Greetings, CISP2030!"); 
    Chapter1 c1 = new Chapter1(); 
    Chapter2 c2 = new Chapter2(); 
    Chapter3 c3 = new Chapter3(); 
    } 

} 
+0

С руководством моего инструктора это разрешилось. Ошибка, которую я объявлял. Я не мог запускать нестационарную команду как статическую, это потому, что System.out.println (c1); был внутри основного метода и помечен как статический, но Chapter1 c1 = new Chapter1 был выше основного метода и поэтому не был установлен как статический методом ниже. Возникла ошибка. Мне пришлось установить три декларации создания экземпляра под командой println и удалить вторую строку печати, которая была там, и эти три строки сделали то, что println пыталось, но не могло для других файлов классов. –

ответ

0

ли, что даже компилировать?

Java не позволяет создавать статические конструкторы.

public Chapter1() // removed "static" 
{ 
    System.out.println("Hello from Chapter1!"); 
} 

c1 является членом GreetingsClass. В main() вы находитесь в статическом методе, а не в методе GreetingsClass, и поэтому вы не можете получить доступ к его членам. Наиболее очевидным решением является добавить GreetingsClass greetings = new GreetingsClass(); в main и попытаться получить c1.

+0

О, ты прав. Статическая переменная этого конструктора не была изначально. Я получал смешанные сигналы в своих кодах ошибок и думал, что мне это нужно. Я не мог заставить мои подсловы расширять мой суперкласс GreetingsClass.java, потому что он сказал что-то об этом не в состоянии сделать это, пока они были нестационарны, и я предполагаю, что я поставил это в неправильном месте. В любом случае исходный код читается без статичности. И когда я попытался скомпилировать его со статикой, он не скомпилируется, заявив, что это объявление не может быть статическим. –