2016-01-05 4 views
0

Попытка устранить ошибки в psvm, я честно не знаю, что не так или что с этим связано с Google. Это не позволит мне публиковать это без лишних слов, но я honeslty не знаю, что не так с программой, чтобы дать более подробную информацию.Основные не будут запускать классы, содержащиеся внутри классов

public class backToSchoolDalton{ 
     public class Person{ 
      //Person Code 
     public class Teacher extends Person{ 
      //TeacherCode 
     public class Student extends Person{ 
      //StudentCode 
     public class CollegeStudent extends Student { 
      //CollegeStudentCode 
     public static void main(String[] args) { 

     ERROR HEAVEN RIGHT HERE 

     backToSchoolDalton a = new backToSchoolDalton(); 
     backToSchoolDalton b = new backToSchoolDalton(); 
     backToSchoolDalton c = new backToSchoolDalton(); 
     backToSchoolDalton d = new backToSchoolDalton(); 
     a.Person("Coach Bob", 27, "M"); 
     b.Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
     c.Teacher("Duke Java", 34, "M", "Computer Science", 50000); 
     d.CollegeStudent("Ima Frosh", 18, "F", "UCB123", 
       4.0, 1, "English"); 

     Person bob = new Person("Coach Bob", 27, "M"); 
     System.out.println(bob); 

     Student lynne = new Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
     System.out.println(lynne); 

     Teacher mrJava = new Teacher("Duke Java", 34, "M", "Computer Science", 50000); 
     System.out.println(mrJava); 

     CollegeStudent ima = new CollegeStudent("Ima Frosh", 18, "F", "UCB123", 
       4.0, 1, "English"); 
     System.out.println(ima); 
    } 
} 

Помогите!

+1

Можем ли мы сделать это в java, что вы опубликовали в своем коде? –

+3

вам действительно нужно принять этот вопрос и прочитать учебник по языку Java ... ваш код не имеет особого смысла. – Leo

+1

Почему вы добавляете столько внутренних классов? Ваши экземпляры a, b, c, d не имеют смысла! Даже если вы можете сделать это неудовлетворительным, это плохой фрагмент кода :( – user3437460

ответ

-2

Редактировать: Мой ниже ответ неверен. Вы можете создать экземпляры класса внутри одного класса, если этот класс не делает этого в конструкторе. Не удаляйте мой ответ, чтобы другие могли узнать из моей ошибки.

Насколько я знаю, вы не можете объявлять экземпляры класса внутри одного и того же класса. Вам нужно переместить основные() вне backtoSchoolDalton():

backToSchoolDalton() { 
    //dalton code 
} 

public static void main(String[] args) { 

    backToSchoolDalton a = new backToSchoolDalton(); 
    backToSchoolDalton b = new backToSchoolDalton(); 
    backToSchoolDalton c = new backToSchoolDalton(); 
    backToSchoolDalton d = new backToSchoolDalton(); 
    a.Person("Coach Bob", 27, "M"); 
    b.Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
    c.Teacher("Duke Java", 34, "M", "Computer Science", 50000); 
    d.CollegeStudent("Ima Frosh", 18, "F", "UCB123", 
     4.0, 1, "English"); 

    Person bob = new Person("Coach Bob", 27, "M"); 
    System.out.println(bob); 

    Student lynne = new Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
    System.out.println(lynne); 

    Teacher mrJava = new Teacher("Duke Java", 34, "M", "Computer Science", 
    50000); 
    System.out.println(mrJava); 

    CollegeStudent ima = new CollegeStudent("Ima Frosh", 18, "F", "UCB123", 
     4.0, 1, "English"); 
    System.out.println(ima); 

} 
+0

Это дает ошибку, если главная находится за пределами класса, использующего имя файла. –

+0

О, попробуйте положить backToSchoolDalton в свою основную функцию –

+0

Это не возможно даже –

0
public static void main(String[] args) { 
    backToSchoolDalton s = new backToSchoolDalton(); 

    Person bob = s.new Person("Coach Bob", 27, "M"); 
    System.out.println(bob); 

    Student lynne = s.new Student("Lynne Brooke", 16, "F", "HS95129", 3.5); 
    System.out.println(lynne); 

    Teacher mrJava = s.new Teacher("Duke Java", 34, "M", "Computer Science", 50000); 
    System.out.println(mrJava); 

    CollegeStudent ima = s.new CollegeStudent("Ima Frosh", 18, "F", "UCB123", 
      4.0, 1, "English"); 
    System.out.println(ima); 
} 
+0

Исправлено это !!!!!!! –

0

Есть два (общие) типов вложенных классов. Inner classes and static nested classes. Внутренний класс связан с экземпляром его окружающего класса, то есть вам нужно создать экземпляр окружающего класса, прежде чем вы сможете его использовать. С другой стороны, статический вложенный класс не является. Это похоже на любой другой класс, за исключением того, что он определен внутри другого класса по организационным причинам.

Решение, которое вы отправили, чтобы построить экземпляр backToSchoolDalton, работает, потому что теперь у вас есть экземпляр окружающего класса. Но это не то, что вы хотите. Вместо этого просто сделайте свои внутренние классы статичными вложенными классами, и вы можете напрямую построить эти классы.

public static class Person { 
    //Person Code 
} 

public static class Teacher extends Person { 
    //TeacherCode 
} 

... 

Teacher c = new Teacher("Duke Java", 34, "M", "Computer Science", 50000); 
Смежные вопросы