public class ClassHome {
    private int h;
    private Student s;
    private final Teacher t;
    private  final int num;
    
public ClassHome() {
this.num=0;
}
public ClassHome(int h, Student s, Teacher t,int num) {
if(num<0){
this.num=0;
System.out.println("人数太少,不能开班!");
}else{
this.num=num;
}
this.s=s;
this.t=t;
}
public int getH() {
return h;
}
public Teacher getT() {
return t;
}

public int getNum() {
return num;
}
public void setS(Student s) {
this.s = s;
}
}

解决方案 »

  1.   

    1、请帖全部代码。
    2、不知道你在说什么。。你的代码考过去一堆问题,姑且不说teacher、student没定义。private final Teacher t; this.t=t; 这可能吗?
      

  2.   


    public class Teacher extends Person {
      private String dept; public Teacher() {

    } public Teacher(String name, int age, String sex,String dept) {
    super(name, age, sex);
       setDept(dept);
    } public String getDept() {
    return dept;
    } public void setDept(String dept) {
    this.dept = dept;
    }
    }public class Student 
    extends Person {
    private int id;public Student() {}public Student(String name, int age, String sex,int id) {
    super(name, age, sex);
    setId(id);
    }public int getId() {
    return id;
    }public void setId(int id) {
    if(id<0){
    System.out.println("学号输入有误!");
    }else{
    this.id = id;
    }    
    }
    }
    public class Person {
      private String name;
      private int age;
      private String sex;
      public Person() {
      
      }
    public Person(String name, int age, String sex) {
    this.setName(name);
    this.setAge(age);
    this.setSex(sex);
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    if(age<0||age>150){
    System.out.println("年龄输入有误!");
    }else{
    this.age = age;
    }
    }
    public String getSex() {
    return sex;
    }
    public void setSex(String sex) {
    this.sex = sex;
    }
    }
    public class ClassHome {
        private int h;
        private Student s;
        private final Teacher t;
        private  final int num;
        
    public ClassHome() {
    this.num=0;
    }
    public ClassHome(int h, Student s, Teacher t,int num) {
    if(num<0){
    this.num=0;
    System.out.println("人数太少,不能开班!");
    }else{
    this.num=num;
    }
    this.s=s;
    this.t=t;
    }
    public int getH() {
    return h;
    }
    public Teacher getT() {
    return t;
    }

    public int getNum() {
    return num;
    }
    public void setS(Student s) {
    this.s = s;
    }
    }
      

  3.   

    private  final int num;你不该用final来限制对num的赋值
    这个程序是不能通过编译的private  final int num; 
    既然你想让num为final,你就应该在这里给他赋值,而且永远不改变this.num=0; 如果你想改变num的值,就不该用final来限制num
      

  4.   


    private  final int num;既然是final,当然就不能再赋值啦
      

  5.   

    private  final int num 
    num为final型,就应该赋初值,并且以后就不能再赋值了
    这个就相当于一个固定整数
      

  6.   

    final 是终态的 被他修饰的变量 会变成常量 只是不能改变的
      

  7.   

    final成员变量可以在声明的地方赋值,也可以在初始化块中赋值,也可以在构造方法中赋值。
    但只能赋值一次,在构造方法中赋值绝对没有任何问题。你的无参构造并不是不能给this.num赋值的问题,而是没有为Teacher t赋值。
      

  8.   

    楼主,你看看axman的回答,final只能附一次值,之后就不能更改了。然后贴代码的时候,你看到发帖子哪里有一个图标,就是在设置字体颜色后面的那个图标,你点一下,然后选择Java,然后在文本框里就出现了“”,你把代码放在中间,然后发出来,这样大家看你代码又清楚,也有利于解决你的问题。呵呵。