小弟在编写继承时出现了 "cannot resolove symbol constructor ZTeaher---自己构造的类"
我定义了person这个类,Teacher继承了person,ZTeacher又继承了Teacher,现在想定义了ZTeacher的一个对象,再调用里面的方法,但是编译时候就出现了上面的错误.请大虾解释一下,指点一下.先谢过.
我想补充一点就是我定义了ZTeacher的对象例如ZTeacher a之后,通过a.还可以显示看到这个类的方法.

解决方案 »

  1.   

    你确定没写错?
    ZTeacher? ZTeaher?
      

  2.   

    哦...那个一时大意,应该是ZTeacher
      

  3.   

    小弟在编写继承时出现了 "cannot resolove symbol constructor ZTeacher---自己构造的类"
    我定义了person这个类,Teacher继承了person,ZTeacher又继承了Teacher,现在想定义了ZTeacher的一个对象,再调用里面的方法,但是编译时候就出现了上面的错误.请大虾解释一下,指点一下.先谢过.
    我想补充一点就是我定义了ZTeacher的对象例如ZTeacher a之后,通过a.还可以显示看到这个类的方法.
      

  4.   

    你看一下这部分:---问题就再这里,a.还可以点除后面的方法,但是编译就过不了
    switch(b[0])
    {
    case '1':
    Student s = new Student();
    s.input();

    v.add(s);

    break;

    case '2':
        ZTeacher a = new ZTeacher();
        a.input();
    v.add(a);
    break;

    case '3':
        GTeacher c = new GTeacher();
        c.input();
    //add GTeacher 
    break;

    case '4':
    //return upper level
    return;

    default:
    System.out.println("错");
    break;
    }
    }
      

  5.   

    ZTeaher类的内容如下:
    public class ZTeacher extends Teacher
    {
    private String majorIn;     public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department)
        {
    super(name, age, addr, id, title, salary, department);
    this.majorIn = majorIn;
    }

    public void setMajorIn(String majorIn)
    {
    this.majorIn = majorIn;
    }

    public void input() throws Exception
    {
    byte b[] = new byte[50];

    super.input();

    System.out.println("majorIn :");
    int i = System.in.read(b);
    majorIn = new String(b,0,i-2);
    }

    public void display()
    {
    super.display();

    System.out.println("MajorIn: " + majorIn);
    }
    }
      

  6.   

    我不说什么了。ZTeacher a = new ZTeacher();public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department) {...}
      

  7.   

    ZTeacher()
    {};   //不是可以省的吗?调用时还是可以用的吧?
      

  8.   

    可以说得详细一点吗?我是菜鸟来的,刚学java不久...帮帮忙拉...大哥
      

  9.   

    public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department)
    你的构造函数定义的是需要带参数的,但你生成ZTeacher实例的时候调用的却是不带参数的,这样当然会出错。
    ZTeacher a = new ZTeacher();//这里的new ZTeacher()就是去调用不带参数的构造函数
      

  10.   

    public ZTeacher(){}是缺省的构造函数,但有个前提条件,那就是你没有显式的定义任何一个构造函数。
    lz的类中已经显式的定义了带参数的构造函数,所以缺省的构造函数就不存在了。
    如果你需要无参的构造函数,需要自己再定义。
      

  11.   

    那我该如何定义ZTeacher的构造函数
      

  12.   

    public ZTeacher(){
        //构造函数的代码
        //写你想在生成对象时做的事情
    }
      

  13.   

    想请问一下public ZTeacher(){//里面可以为空吗?不用super继承父类那些属性吗?}
      

  14.   

    就是这样写啊,显式的定义
    public ZTeacher(){//这里可以什么也没有,但一定要写出来,就是显式的定义的意思}事实上一般不推荐 这样写 public ZTeacher(String majorIn, String name, int age, String addr, String id, String title, float salary, String department)
    而是用
    setMajor(String majorIn){...}
    setName(String name)
    .....
      

  15.   

    public ZTeacher(){
        //构造函数的代码
        //写你想在生成对象时做的事情
    }ftiger(哈哈鱼)说的对,即使代码为空,这也是显式的定义的无参数的构造函数。
    一般来说,构造函数里应当为一些成员属性进行初始化,比如你可能定义majorIn、name等属性,生成该对象调用对象的方法之前,这些属性应当有值,构造函数里面就是做这样的事情。感觉lz没有掌握面向对象的基本概念,强烈建议在这方面巩固加强。