2015-08-09 4 views
0
public class constprac { 

    public static void main(String args[] ) 
    { 
     consttest class1=new consttest("ria"); 
     class1.showName(); 
    } 
} 


Почему, если имя моего файла и имя открытого класса отличаются, я получаю ошибку компиляции?

**public** class consttest{ 
    String gname; 
    public consttest(String name){`` 
     gname=name; 
    } 
    public String setName(){ 
     return gname; 
    } 
    public void showName(){ 
     System.out.println("YOUR 1ST GirlFriend IS "+ setName()); 
    } 
} 
+0

Приветствуем вас в StackOverflow. Пожалуйста, найдите время, чтобы прочитать [страницу справки] (http://stackoverflow.com/help), особенно разделы «Какие темы можно задать здесь?» и «Какие типы вопросов я должен избегать?». И что еще более важно, прочитайте контрольный список вопросов по переполнению стека (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist). Вы также можете узнать о [Минимальных, Полных и Подтверждаемых примерах] (http://stackoverflow.com/help/mcve). – galath

+0

Так разработала Java. См http://stackoverflow.com/questions/1841847/can-i-compile-a-java-file-with-a-different-name-than-the-class Http: //stackoverflow.com/questions/10442758/why-must-a-java-file-have-the-same-name-as-its-public-class –

+0

Так разработала Java. Ниже приведены ссылки http://stackoverflow.com/questions/10442758/why-must-a-java-file-have-the-same-name-as-its-public-class Http: //stackoverflow.com/questions/1841847/can-i-compile-a-java-file-with-a-different-name-than-the-class –

ответ

2

почему, если мое имя файла и имя общественного класса отличается, то я получаю ошибку компиляции?

Потому что, как определяются Java: Если у вас есть общественного класса, он должен быть в файл с именем после публичного класса.

Детали можно найти в §7 of the JLS. По сути говоря, если исходный код хранится в файловой системе, накладывается определенный набор требований, чтобы система пакета работала согласованно.

+0

Пользователь знает это правило. Он просит причину этого. 'именно так определяется Java 'не является ответом. –

+3

@ sᴜʀᴇsʜᴀᴛᴛᴀ: Я не вижу никаких доказательств этого. –

+1

то, что вы сказали, верно в случае основного класса. Но почему возникает ошибка компиляции, если я изменяю имя класса в другом подклассе с спецификатором доступа с именем pubilc? –