Java, импорт не разрешен, наследование, внутренний класс

Начал недавно программировать на Java, столкнулся с ошибкой. пожалуйста помоги

Имейте два класса, PersonTest.java:

 public class PersonTest {

  public static void main(String[] args) {
    Person person1=new Person("dummy","sdymmt","20","male","washington");
    System.out.println("Name: "+person1.getName());
    System.out.println("Surname: "+person1.getSurname());
    System.out.println("Age: "+person1.getAge());
    System.out.println("Gender:" +person1.getGender());
    System.out.println("Birthplace: "+person1.getBirthplace());
    Person person2= new Person(400);
    System.out.println("Income:"+person2.getX()+" mije leke");
    System.out.println("Tax:"+person2.Taksat()+" mije leke");
    Student student1= new Student("adsd","zedsdsadza");
    System.out.println("emri"+student1.getEmer());
}

}

а также Person.java :

public class Person {
    private String Name;
    private String Surname;
    private String Age;
    private String Gender;
    private String Birthplace;
    private double x;
    public Person()
    {

    }
    public Person(String Name, String Surname, String Age, String Gender, String Birthplace) {
        this.Name = Name;
        this.Surname = Surname;    
        this.Age = Age; 
        this.Gender = Gender;
        this.Birthplace = Birthplace;

    }

    public String getName() {
        return Name;
    }

    public String getSurname() {
        return Surname;
    }

    public String getAge() {
        return Age;
    }

    public String getGender() {
        return Gender;
    }

    public String getBirthplace() {
        return Birthplace;
    }

    public Person(double x) {
        this.x = x;
    }

    public double getX() {
        return x;
    }

    double Taksat() {
        return (0.1 * x);
    }

    public class Student extends Person {
        private String University;
        private String Faculty;

        public Student(String Universiteti, String Fakulteti) {
            super(Name, Surname, Age, Gender, Birthplace);
            this.Faculty = Fakulteti;
            this.University = Universiteti;
        }

        public String getFaculty() {
            return Faculty;
        }

        public String getUniversity() {
            return University;
        }
    }
}

Два класса находятся в одном пакете по умолчанию. Как исправить тот факт, что тестовый класс не распознает ученика внутреннего класса как класс.


person Enis Dorini    schedule 22.11.2015    source источник
comment
Возможный дубликат как вызвать метод внутреннего класса из статического основного () метод   -  person Nir Levy    schedule 23.11.2015


Ответы (2)


Вложенные нестатические классы называются Inner Classes, эти классы не могут жить без Outer class (которые их обертывают).

Документация по Java

Экземпляр InnerClass может существовать только внутри экземпляра OuterClass и имеет прямой доступ к методам и полям своего экземпляра.

Чтобы создать экземпляр внутреннего класса, вы должны сначала создать экземпляр внешнего класса. Затем создайте внутренний объект внутри внешнего объекта с помощью следующего синтаксиса:

ВнешнийКласс.ВнутреннийКласс внутреннийОбъект = внешнийОбъект.новый ВнутреннийКласс();

Попробуйте использовать:

Person.Student student = person1.new Student(PARAMETERS);

Важная отметка:

Конечно, вы должны учитывать, что это не очень хороший дизайн, потому что вы можете захотеть, чтобы эти классы были видны за пределами Person class, а также потому, что Person.Student наследуется от Person, который уже содержит Student class, который обычно выглядит как цикл или отношения круга, что обычно не очень хорошая идея для первого места.

person Orel Eraki    schedule 22.11.2015
comment
Спасибо, мой друг. Это сработало очень хорошо. Это было упражнение, которое профессор отпустил из класса домой и сказал, чтобы он продолжал работу, которую он дал, не знаю почему. Я хотел сделать класс отдельно, человек сам по себе, ученик сам по себе, а затем просто расширить. - person Enis Dorini; 23.11.2015

Потому что нет студенческого класса. Поскольку он вложен, это Person.Student

person DBug    schedule 22.11.2015