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;
        }
    }
}

两个类在同一个默认包中。如何解决测试类不将内部类学生识别为类的事实。

嵌套的非静态类称为Inner Classes,如果没有Outer class(封装它们),这些类就无法生存。

Java文档

InnerClass的实例只能存在于OuterClass,并可以直接访问其封闭实例。

要实例化内部类,必须首先实例化外部类班然后,在外部对象中创建内部对象语法:

OuterClass.InnerClass innerObject=outerObject.new InnerClass();

尝试使用:

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

重要标记:

当然,您应该高度考虑这不是一个好的设计,因为您可能希望这些类在Person class之外可见,但也因为Person.Student继承自Person,它已经包含了Student class,它通常看起来像一个循环或圆关系,这通常不是一个很好的主意。

因为没有Student类。由于它嵌套,它是Person.Student

最新更新