【问题标题】:Java ,import not resolved,inheritance,inner classJava,导入未解析,继承,内部类
【发布时间】:2015-11-22 23:37:16
【问题描述】:

最近在求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;
        }
    }
}

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

【问题讨论】:

标签: java inheritance inner-classes


【解决方案1】:

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

Java docs

InnerClass 的实例只能存在于 OuterClass 并可以直接访问其方法和字段 封闭实例。

要实例化一个内部类,必须先实例化外部类 班级。然后,用这个在外部对象中创建内部对象 语法:

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

尝试使用:

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

重要标记:

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

【讨论】:

  • 谢谢我的朋友。效果很好。这是一个教授从课堂到家里的练习,说要继续他给的设计,不知道为什么。我想单独上课,一个人,一个学生,而不仅仅是扩展。
【解决方案2】:

因为没有 Student 类。既然是嵌套的,就是Person.Student

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多