各位帮帮我看看这个程序出错怎么改才行?
题目:1.同一个包中分别编写Person,Student类。Person具有年龄,性别,姓名,地址这四个基本属性,并且它们的访问权限分别是私有的,缺省的,保护的,公有的,同时还拥有sleep方法。Student类从Person类继承,并且拥有学号属性,及学习方法。这里要求Person,Student类的构造函数是有参数的构造函数,通过有参数的构造函数对类中的数据进行初始化。
2. 在另外一个包中创建Teacher类,Teacher类从Person类中继承,教师具有职称属性及教学这个方法,同样要求教师类的构造函数是有参数的。
3. 分别创建教师类和学生类的对象,并编写程序观察这些哪些属性方法可以访问,哪些属性方法可以从父类继承下来。
4. 记录观察的结果,并得出结论。我编代码如下,可是有错,请您帮改改: -ffAWNQ  
public class Main {class Person{
private int age=0;
String sex="";
protected String name="";
public String address="";
void sleep(){
 System.out.println("我正在睡觉,请误打扰!");};
 public Person()
{
   System.out.println("person无参数构造函数");
}
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参数的构造函数");  
}
} class Student extends Person{
    int stu_no;
    void study(){
    System.out.println("我正在学习,请误打扰!");};
    public Student()
{
   System.out.println("student 无参数的构造函数");
}
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)
{  super(age,sex,name,address);
   this.age=s_age;
   this.sex=s_sex;
   this.name=s_name;
   this.address=s_address;
   this.stu_no=stu_no;
   System.out.println("student参数的构造函数");
}
}class Teacher extends Person{
      String zhichen;
      void teaching(){
      System.out.println("我正在教书,稍后再来找我!");};
      public Teacher()
{
   System.out.println("student 无参数的构造函数");
}
public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)
{  super(age,sex,name,address);
   this.age=t_age;
   this.sex=t_sex;
   this.name=t_name;
   this.address=t_address;
   this.zhichen=t_zhichen;
   System.out.println("Teacher参数的构造函数");  
}
}public static void main(String [] args)
{  
   Student stu=new Student(24,"男","ylw","fujian","071806164");
   System.out.println("---------------------------");   Student tea=new Teacher(27,"女","zyl","fujian","教授");
  System.out.println("---------------------------");
}
}
编译出错情况如下: 
init: 
deps-jar: 
Compiling 1 source file to D:\java\实验一\build\classes   
D:\java\实验一\src\test1\Main.java:36: age 可以在 test1.Main.Person 中访问 private 
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 sex  
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 name 
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 address 
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:37: age 可以在 test1.Main.Person 中访问 private  
  this.age=s_age; 
D:\java\实验一\src\test1\Main.java:51: age 可以在 test1.Main.Person 中访问 private  
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 sex 
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 name
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 address 
{  super(age,sex,name,address); 
D:\java\实验一\src\test1\Main.java:52: age 可以在 test1.Main.Person 中访问 private 
  this.age=t_age; 
D:\java\实验一\src\test1\Main.java:63: 无法从静态上下文中引用非静态 变量 this 
  Student stu=new Student(24,"男","ylw","fujian","071806164"); 
D:\java\实验一\src\test1\Main.java:66: 无法从静态上下文中引用非静态 变量 this  
  Student tea=new Teacher(27,"女","zyl","fujian","教授");
12 错误 生成失败(总时间:10 秒)

解决方案 »

  1.   

    public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen) 
    {  super(age,sex,name,address);                   //形参没初值;----super(t_age,t_sex,t_name,t_address)
       this.age=t_age;                                //this代表的是引用自身对象,在Teacher类中并没定义以下的参数,如果用super也错,private是私有变量的定义,无法调用的,可以通过方法传递.this.变量其实在这里的意义不大.
       this.sex=t_sex; 
       this.name=t_name; 
       this.address=t_address; 
       this.zhichen=t_zhichen; 
       System.out.println("Teacher参数的构造函数");   


    学生类同理;
      

  2.   


    public class Person {
    public int age = 0; public String sex = ""; protected String name = ""; public String address = ""; void sleep() {
    System.out.println("我正在睡觉,请误打扰!");
    }; public Person() {
    System.out.println("person无参数构造函数");
    } 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参数的构造函数");
    }}public class Student extends Person {
    private String stu_no; void study() {
    System.out.println("我正在学习,请误打扰!");
    }; public Student() {
    System.out.println("student 无参数的构造函数");
    } public Student(int s_age, String s_sex, String s_name, String s_address, String stu_no) {
    super(s_age, s_sex, s_name, s_address);
    this.age = s_age;
    this.sex = s_sex;
    this.name = s_name;
    this.address = s_address;
    this.stu_no = stu_no;
    System.out.println("student参数的构造函数");
    }}
    public class Teacher extends Person {
    String zhichen; void teaching() {
    System.out.println("我正在教书,稍后再来找我!");
    }; public Teacher() {
    System.out.println("student 无参数的构造函数");
    } 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.age = t_age;
    this.sex = t_sex;
    this.name = t_name;
    this.address = t_address;
    this.zhichen = t_zhichen;
    System.out.println("Teacher参数的构造函数");
    } public static void main(String[] args) {
    Student stu = new Student(24, "男", "ylw", "fujian", "071806164");
    System.out.println("---------------------------"); Teacher tea = new Teacher(27, "女", "zyl", "fujian", "教授");
    System.out.println("---------------------------");
    }}
      

  3.   

    class Student extends Person{ 
        int stu_no; 
        void study(){ 
        System.out.println("我正在学习,请误打扰!");}; 
        public Student() 

       System.out.println("student 无参数的构造函数"); 

    public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no) 
    {  super(age,sex,name,address); 
       this.age=s_age; 
       this.sex=s_sex; 
       this.name=s_name; 
       this.address=s_address; 
       this.stu_no=stu_no; 
       System.out.println("student参数的构造函数"); 


    //这里的学好应该是整型,但你传的是字符串型,而且应该数字过于打了.
    //Student tea=new Teacher(27,"女","zyl","fujian","教授"); 这个应该是不能转换的类型吧! 
      

  4.   

    class Person{ 
    public int age = 0; 
    String sex=""; 
    protected String name=""; 
    public String address=""; 
    void sleep(){ 
     System.out.println("我正在睡觉,请误打扰!");
     }
     public Person() 

       System.out.println("person无参数构造函数"); 

     
     
    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参数的构造函数");   

    }  class Student extends Person{ 
        int stu_no; 
       
        public Student() 

       System.out.println("student 无参数的构造函数"); 

    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.age=s_age; 
    //   this.sex=s_sex; 
    //   this.name=s_name; 
    //   this.address=s_address; 
       this.stu_no=stu_no; 
       System.out.println("student参数的构造函数"); 

    void study(){ 
        System.out.println("我正在学习,请误打扰!");
        } 
    } class Teacher extends Person{ 
          String zhichen; 
          void teaching(){ 
          System.out.println("我正在教书,稍后再来找我!");}; 
          public Teacher() 

       System.out.println("student 无参数的构造函数"); 

    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.age=t_age; 
    //   this.sex=t_sex; 
    //   this.name=t_name; 
    //   this.address=t_address; 
       this.zhichen=t_zhichen; 
       System.out.println("Teacher参数的构造函数");   


    public class Main {
    public static void main(String [] args) 
    {   
       Student stu=new Student(24,"男","ylw","fujian",64); 
       System.out.println("---------------------------");    Teacher tea=new Teacher(27,"女","zyl","fujian","教授"); 
      System.out.println("---------------------------");