2015-11-22 3 views
0

La mendicité de la programmation Java récemment, se termine par une erreur. s'il vous plaît aiderJava, importation non résolue, héritage, classe interne

Avoir deux classes, 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()); 
} 

} 

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

Deux classes sont dans le même package par défaut. Comment résoudre le fait que la classe de test ne reconnaît pas l'étudiant de la classe interne en tant que classe.

+1

Copie possible de [comment appeler la méthode de la classe interne à partir de la méthode statique main()] (http://stackoverflow.com/questions/16954599/how-to-call-inner-classs-method-from-static-main -méthode) –

Répondre

2

La classe non statique imbriquée est appelée Inner Classes et les classes ne peuvent pas vivre sans le Outer class (qui les a enveloppées).

Java docs

Une instance de classe interne peut exister que dans une instance de OuterClass et a un accès direct à des méthodes et des champs de son exemple enfermant. Pour instancier une classe interne, vous devez d'abord instancier la classe externe. Ensuite, créez l'objet interne dans l'objet externe avec cette syntaxe :

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

Essayez d'utiliser:

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

Mark Important:

Bien sûr, vous devriez très considérer que ce n'est pas une bonne conception, parce que vous voudrez peut-être ce cours pour être visibles à l'extérieur du Person class mais aussi parce que Person.Student hérite de Person, qu'il contient déjà le Student class, ce qui ressemble généralement à une relation de boucle ou un cercle, qui habituellement pas un aller od idée pour la première place.

+0

Merci mon ami.Il a très bien travaillé.C'était un exercice qu'un professeur a laissé de classe en maison et a dit de continuer sur le design qu'il a donné, ne sais pas pourquoi. Je voulais faire la classe séparément, la personne par elle-même, l'élève par elle-même, et juste étendre. –

2

Parce qu'il n'y a pas de classe Student. Comme il est imbriqué, il est Person.Student