现在有两个包,下面的是第一包,在第二个包里看不到GraduateStudent类...package com.neusoft.vo;
     public class Student {
     public String name;
     public String sex;
     public int age;
     public String schoolName;     public  Student (){}
     public  Student(String name,String sex,int age,String schoolName){
      this.name=name;
      this.sex=sex;
      this.age=age;
      this.schoolName=schoolName;
      }     class GraduateStudent extends  Student {
     String specialityl;
     String teacher;
   
      public GraduateStudent(){}
      public GraduateStudent(String name,String sex,int age,String schoolName,String specialityl,String teacher){
      super.name=name;
      super.sex=sex;
      super.age=age;
      super.schoolName=schoolName;
      this.specialityl=specialityl;
      this.teacher=teacher;
     }
package test;
import com.neusoft.vo.*;
public class TestStudentAndGraduateStudent extends Student {
public static void main(String[] args) {
        Student zhou[]=new Student[2];
        zhou[0]=new Student("赵大","男",19,"华南理工大学");
        //不知道下面这样写可不可以,是Student 的引用然后是GraduateStudent类型的数组。应该行的吧
        zhou[1]=new GraduateStudent("孙三","男",25,"华南师范大学","教育学","李四");总是显示GraduateStudent不可见把它修饰成public 的话,Student类又看不到了
折磨了很久都不懂。。
刚学啊。。很多都不懂。。请大牛们解答

解决方案 »

  1.   

    本帖最后由 AWUSOFT 于 2012-04-16 21:30:41 编辑
      

  2.   

    GraduateStudent是Student类的内部类,你把这两个类分别放在两个文件中(还在同一个包里)试试
      

  3.   

    把它写成两个类package com.neusoft.vo;
         public class Student {
         public String name;
         public String sex;
         public int age;
         public String schoolName;     public  Student (){}
         public  Student(String name,String sex,int age,String schoolName){
             this.name=name;
             this.sex=sex;
             this.age=age;
             this.schoolName=schoolName;
          }
    package com.neusoft.vo;
         public class GraduateStudent extends  Student {
            String specialityl;
            String teacher;
       
          public GraduateStudent(){}
          public GraduateStudent(String name,String sex,int age,String schoolName,String specialityl,String teacher){
                 super.name=name;
                 super.sex=sex;
                 super.age=age;
                 super.schoolName=schoolName;
                 this.specialityl=specialityl;
                 this.teacher=teacher;
            }
      

  4.   

    不好意思。。好像我打漏了一个括号,不是内部类的吧。我是分开写的。我贴完整代码出来。。麻烦了
    我把它们分成两个文件,还是不行呢在GraduateStudent还是不可见。。package com.neusoft.vo;
         public class Student {
         public String name;
         public String sex;
         public int age;
         public String schoolName;     public  Student (){}
         public  Student(String name,String sex,int age,String schoolName){
             this.name=name;
             this.sex=sex;
             this.age=age;
             this.schoolName=schoolName;
          }
         }
     
    package com.neusoft.vo;
         public class GraduateStudent extends  Student {
           public  String specialityl;
           public String teacher;
       
          public GraduateStudent(){}
          public GraduateStudent(String name,String sex,int age,String schoolName,String specialityl,String teacher){
                 super.name=name;
                 super.sex=sex;
                 super.age=age;
                 super.schoolName=schoolName;
                 this.specialityl=specialityl;
                 this.teacher=teacher;
            }
         }
    另外的一个包,在这里调用不了GraduateStudent
    package test;
    import com.neusoft.vo.*;
    public class TestStudentAndGraduateStudent   {
    public static void main(String[] args) {
            Student zhou[]=new Student[6];
            zhou[0]=new Student("赵大","男",19,"华南理工大学");
            zhou[1]=new Student("钱二","男",17,"中山大学");
            //这里报错,总是显示GraduateStudent不可见。
            zhou[2]=new GraduateStudent("孙三","男",25,"华南师范大学","教育学","李四");
            zhou[3]=new Student("周五","女",18,"东软学院");
            zhou[4]=new GraduateStudent("吴六","女",24,"清华大学","工商企业管理","郑七");
            zhou[5]=new Student("罗八","男",18,"佛山科技大学");
            
            // 找出其中女的信息然后修改。
            for(int i=0;i<zhou.length;i++){
             if(zhou[i].sex.equals("女")){
             zhou[i].schoolName="广东工业大学";  
             }
            }
            
            // 输出学生的信息。
            for(int i=0;i<zhou.length;i++){
             System.out.println("姓名:"+zhou[i].name+"\n"+"性别:"+zhou[i].sex+"\n"+"年龄:"+zhou[i].age+"\n"+"学校:"+zhou[i].schoolName+"\n"+"专业:"
                          +zhou[i].specialityl+"\n"+"导师:"+zhou[i].teacher);
            }

    }}代码有点乱,不好意思了
      

  5.   

    不可能吧,但是            System.out.println("姓名:"+zhou[i].name+"\n"+"性别:"+zhou[i].sex+"\n"+"年龄:"+zhou[i].age+"\n"+"学校:"+zhou[i].schoolName+"\n"+"专业:"
                                     +zhou[i].specialityl+"\n"+"导师:"+zhou[i].teacher);这里肯定要报错的,因为Student里面没有specialityl和teacher这两个属性。
      

  6.   

    if(zhou[i] instanceof GraduateStudent){
        GraduateStudent gs = (GraduateStudent)zhou[i];
    }
    这样强制转换成GraduateStudent,然后再获取