各位帮帮我看看这个程序出错怎么改才行? 
题目:1.同一个包中分别编写Person,Student类。Person具有年龄,性别,姓名,地址这四个基本属性,并且它们的访问权限分别是私有的,缺省的,保护的,公有的,同时还拥有sleep方法。Student类从Person类继承,并且拥有学号属性,及学习方法。这里要求Person,Student类的构造函数是有参数的构造函数,通过有参数的构造函数对类中的数据进行初始化。 
2. 在另外一个包中创建Teacher类,Teacher类从Person类中继承,教师具有职称属性及教学这个方法,同样要求教师类的构造函数是有参数的。 
3. 分别创建教师类和学生类的对象,并编写程序观察这些哪些属性方法可以访问,哪些属性方法可以从父类继承下来。 
4. 记录观察的结果,并得出结论。
现代码如下,编译报错,请各位大哥帮我改改
//1、第一个包student.java代码如下:
package stu;
class Person{  
private int age = 20;  
String sex="男";  
protected String name="叶";  
public String address="屏南";  
void sleep(){  
 System.out.println("我正在睡觉,请误打扰!"); 
 }  
public Person(int age,String sex,String name,String address)  
{    
   this.age=age;  
   this.sex=sex;  
   this.name=name;  
   this.address=address;  
   System.out.println("person类有参数的构造函数");   
   System.out.println(age);  
   System.out.println(sex);
   System.out.println(name);  
   System.out.println(address);
   sleep();
}  
}   
class Student extends Person{  
    int stu_no;      
    void study(){  
    System.out.println("我正在学习,请误打扰!"); 
    }  
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)  
{  super(s_age,s_sex,s_name,s_address);   
   this.stu_no=stu_no;
   System.out.println("student类有参数的构造函数");  
   //System.out.println(age);  
   System.out.println(sex);
   System.out.println(name);  
   System.out.println(address);
   System.out.println(stu_no);
   study();     
}  
}   
//2、第二个包teacher.java代码如下:
package tea;
import stu.Person;
class Teacher extends Person{  
      String zhichen;  
      void teaching(){  
      System.out.println("我正在教书,稍后再来找我!");};   
public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)  
{  super(t_age,t_sex,t_name,t_address);      
   this.zhichen=t_zhichen;  
   System.out.println("Teacher类有参数的构造函数");    
   //System.out.println(age);  
   //System.out.println(sex);
   System.out.println(name);  
   System.out.println(address);
   System.out.println(t_zhichen);
   teaching();  
}  
}
3、创建教师类和学生类的对象main.java代码如下:
import stu.*;
import tea.*;
public class Main { 
public static void main(String [] args)  
{    
   Student stu=new Student(24,"男","ylw","fujian",07164);  
   System.out.println("---------------------------");     Teacher tea=new Teacher(27,"男","lm","fujian","教授");  
  System.out.println("---------------------------");  
}  
} 运行错误情况如下:
1、第一个包student.java编译通过
2、第二个包teacher.java出错信息是:stu.person在stu中不是公共了,无法从外部软件包对其访问import stu.person
3、main.java出错信息是:stu.student在stu中不是公共了,无法从外部软件包对其访问Student stu=new Student(24,"男","ylw","fujian",07164);  请问这怎么改才行啊!急救

解决方案 »

  1.   

    在声明person类的时候用public就可以了。public class person这样就可以了
      

  2.   

    没有声明为public的class,就是c中的friendly类型,在包外不能访问
      

  3.   

    我试过了,等下main.java有会出错,出错信息是:stu.student在stu中不是公共了,无法从外部软件包对其访问Student stu=new Student(24,"男","ylw","fujian",07164);  
      

  4.   

    你在把Student类也声明为public,Teacher类也为public
      

  5.   

    Teacher类和Student类之前都要加public问题想全面塞
      

  6.   

    我改为
    1、person.java中程序如下:
    package stu1;
    public class Person{  
    private int age = 20;  
    String sex="男";  
    protected String name="叶";  
    public String address="屏南";  
    void sleep(){  
     System.out.println("我正在睡觉,请误打扰!"); 
     }  
    public Person(int age,String sex,String name,String address)  
    {    
       this.age=age;  
       this.sex=sex;  
       this.name=name;  
       this.address=address;  
       System.out.println("person类有参数的构造函数");   
       System.out.println(age);  
       System.out.println(sex);
       System.out.println(name);  
       System.out.println(address);
       sleep();
    }  
    }   
      
    2、Student.java中程序如下:
    package stu2;
    import stu1.*;
    public class Student extends Person{  
        int stu_no;      
        void study(){  
        System.out.println("我正在学习,请误打扰!"); 
        }  
    public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)  
    {  super(s_age,s_sex,s_name,s_address);   
       this.stu_no=stu_no;
       System.out.println("student类有参数的构造函数");  
       //System.out.println(age);  
      // System.out.println(sex);
       System.out.println(name);  
       System.out.println(address);
       System.out.println(stu_no);
       study();     
    }  

    3、teacher.java中程序如下:
    package tea;
    import stu1.*;
    public class Teacher extends Person{  
          String zhichen;  
          void teaching(){  
          System.out.println("我正在教书,稍后再来找我!");};   
    public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)  
    {  super(t_age,t_sex,t_name,t_address);      
       this.zhichen=t_zhichen;  
       System.out.println("Teacher类有参数的构造函数");    
       //System.out.println(age);  /*没有注释掉程序也出错,说这不是公共类*/
       //System.out.println(sex);
       System.out.println(name);  
       System.out.println(address);
       System.out.println(t_zhichen);
       teaching();  
    }  
    }
    4、main.java中程序如下:
    import stu1.*;
    import stu2.*;
    import tea.*;
    public class Main { 
    public static void main(String [] args)  
    {    
       Student stu=new Student(24,"男","ylw","fujian",07164);  
       System.out.println("---------------------------");     Teacher tea=new Teacher(27,"男","lm","fujian","教授");  
      System.out.println("---------------------------");  
    }  

    程序运行还出错
    提示:无法访问student、teacher类
      

  7.   

    import stu2.Student;
    import tea.Teacher; 
    public class Main1{  
    public static void main(String [] args)   
    {     
       Student stu=new Student(24,"男","ylw","fujian",07164);   
       System.out.println("---------------------------");      Teacher tea=new Teacher(27,"男","lm","fujian","教授");   
      System.out.println("---------------------------");    
    }   
    }  
    具体情况我也不是很清楚,你这样改改试试
      

  8.   

    import stu2.Student; 
    import tea.Teacher;  
    public class Main{   
    public static void main(String [] args)    
    {      
       Student stu=new Student(24,"男","ylw","fujian",07164);    
       System.out.println("---------------------------");       Teacher tea=new Teacher(27,"男","lm","fujian","教授");    
      System.out.println("---------------------------");     
    }    
    }   
    忘了,改了你的类名,因为在我的文件夹里有了Main这个类了
      

  9.   

    你改后程序没有出错了,可是在运行main时结果为:
    Exception in thread "main"java,lang.noclassdeffounderror:Main<wrong name:Main>
    at java.lang.classloader.defineclass1<native method>.......
    还是没有结果啊
      

  10.   

    1、person.java中程序如下: 
    package stu1; 
    public class Person{   
    private int age = 20;   
    String sex="男";   
    protected String name="叶";   
    public String address="屏南";   
    void sleep(){   
     System.out.println("我正在睡觉,请误打扰!");  
     }   
    public Person(int age,String sex,String name,String address)   
    {     
       this.age=age;   
       this.sex=sex;   
       this.name=name;   
       this.address=address;   
       System.out.println("person类有参数的构造函数");    
       System.out.println(age);   
       System.out.println(sex); 
       System.out.println(name);   
       System.out.println(address); 
       sleep(); 
    }   
    }    
       
    2、Student.java中程序如下: 
    package stu2; 
    import stu1.*; 
    public class Student extends Person{   
        int stu_no;       
        void study(){   
        System.out.println("我正在学习,请误打扰!");  
        }   
    public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)   
    {  super(s_age,s_sex,s_name,s_address);    
       this.stu_no=stu_no; 
       System.out.println("student类有参数的构造函数");   
       //System.out.println(age);   
      // System.out.println(sex); 
       System.out.println(name);   
       System.out.println(address); 
       System.out.println(stu_no); 
       study();      
    }   
    }  
    3、teacher.java中程序如下: 
    package tea; 
    import stu1.*; 
    public class Teacher extends Person{   
          String zhichen;   
          void teaching(){   
          System.out.println("我正在教书,稍后再来找我!");};    
    public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)   
    {  super(t_age,t_sex,t_name,t_address);       
       this.zhichen=t_zhichen;   
       System.out.println("Teacher类有参数的构造函数");     
       //System.out.println(age);  /*没有注释掉程序也出错,说这不是公共类*/ 
       //System.out.println(sex); 
       System.out.println(name);   
       System.out.println(address); 
       System.out.println(t_zhichen); 
       teaching();   
    }   

    4、Main.java中程序如下: //"main.java"改称了"Main.java"
    import stu2.Student;       //修改了这里,其中删除了一个import语句
    import tea.Teacher;        //修改了这里
    public class Main {  
    public static void main(String [] args)   
    {     
       Student stu=new Student(24,"男","ylw","fujian",07164);   
       System.out.println("---------------------------");      Teacher tea=new Teacher(27,"男","lm","fujian","教授");   
      System.out.println("---------------------------");   
    }   
    }  
    我运行了,能出你所写的数据,你看看是不是你在写的时候另外的什么地方出错了;
    noclassdeffounderror这个问题是不是你文件名或者是类名有问题
      

  11.   

    同样你的文件或类名"teacher.java"是否也是"Teacher.java"